#!/usr/bin/perl
use warnings;
use strict;
use Tk;
use Tk::Trace;
use Tk::LabFrame;
use Tk::ProgressBar;
use Tk::NoteBook;

use Tk::Dialog;

use Tk;
use utf8;
use constant PI => 3.1415926;

use DBI;
use File::HomeDir;
use Config::Simple;
use Tk::Chart;
use Tk::Chart::Lines;
use Tk::Canvas::GradientColor;
use Tk::PNG;

use Number::Bytes::Human qw(format_bytes);

use Scalar::Util qw(looks_like_number);

my ($configuration_file, $homedir, $dbfile, $lang) = homedir();
$lang = 'ru_RU.UTF-8' if (!$lang);
my $databasedir;
my $os = $^O;
my $PortObj;
my ($connbutt, $connbutt2);

my $x0 = 15; #was 15
my $y0 = 80; #was 50
my $x_max = 640;
my $y_max = 570;

my $font_global_set =1;

my $screen;

my $testcount; #for shutdown ups func

my $map_operation;
my %param;
my $port_in_use = '/dev/ttyUSB0';
my $port_not_opening ="";
my $serial_connection;
my %readings;
my $reading;
my $debug = 0;
my ($map_power, $qty, $map_current_max);
#$qty=4;
my ($coords_xy, $status, $status_batt_type, $status_batt_cap, $voltage_acc, $voltage_socket_out, $Cacc, $Cacc_text); #vars from map
my ($disconnected, $temp_batt_text, $temp_batt, $status_freq_text, $status_volt_in_text); #vars from map
my ($acc_status, $status_batt_map_text, $acc_discharged);
my ($temp_transistors_text, $temp_tor_text, $map_params_text);
my ($signal_form); #eeprom addr to read/write to
my ($powermeter, $power_text);
my ($signal_form_set, $acc_type, $charge_alg, $net_control_alg, $sound_control, $lcd_backlight, $acc_consrv); #map_settings
my $conn_speed = 19200;
my $conn_try_count=0;
my ($tbd, $settings, $font_counter, $t);
my ($times, $times2, $time_hours_map, $time_minutes_map, $real_time_label);
my ($time_savings_begin_label, $time_savings_begin_hours, $time_savings_begin_minutes);
my ($time_savings_end_label, $time_savings_end_hours, $time_savings_end_minutes);
my ($map_voltage_generated, $map_net_level_lower, $map_net_level_upper, $map_min_extra_gen_level, $map_voltage_acc_gen_end);
my ($map_acc_charge_start, $map_acc_sust_charge, $map_acc_charge_end );
my ($load_start, $current_end_charge, $current_start_charge, $capacity_entire);
my ($map_versions, $map_versions_changes);
my ($net_type_label, $map_max_charge_time);
my $read_counter = 0;
my $timestamp;
my ($prompt_warning, $warnings);
my ($prompt_errors, $errors);
my ($prompt_errors_version, $errors_version);
my ($errors_JobM, $prompt_errors_JobM, $errors_ErrJob, $prompt_errors_ErrJob);
my $load_start_entry;
my ($database_path_text, $homedirtext, $databasepath);
my ($buttonchoice, $connbutt_text, $connbutt_text1, $connbutt_text2, $connbutt_text3);
my $count_shutdown;

my @voltage_acc_charge_end = ('-','11.5','11.7', '11.8', '12', '12.1', '12.3', '12.4', '12.5', '12.6', '12.7', '12.6','13.7','13.8','13.9','14.0','14.1','14.2','14.3','14.4','14.5','14.6','14.7', '14.8','14.9','15','15.1');
my @voltage_acc_sust_charge = ('-','13.0','13.1','13.2','13.3','13.4','13.5','13.6','13.7','13.8','13.9','14.0', '14.1','14.2','14.3','14.4','14.5','14.6'.'14.7','14.8','14.9','15');
my @voltage_acc_charge_start = ('-','9.0','9.5','10.0','10.5','11.0','11.5','11.7', '11.8', '12', '12.1', '12.3', '12.4', '12.5', '12.6', '12.7', '12.6','13.7','13.8','13.9','14.0','14.1','14.2','14.3','14.4','14.5','14.6','14.7', '14.8','14.9','15','15.1'); 
my @voltage_acc_gen_end = ('-','9.0','9.5','10.0','10.5','11.0','11.5','11.7', '11.8', '12', '12.1', '12.3', '12.4', '12.5', '12.6', '12.7', '12.6','13.7','13.8','13.9','14.0','14.1','14.2','14.3','14.4','14.5','14.6','14.7', '14.8','14.9','15','15.1');
my @voltage_min_extra_gen_level = ('-','8.5','9','9.5','10','10.5','11','11.5','11.7', '11.8', '12', '12.1', '12.3', '12.4', '12.5', '12.6', '12.7', '12.6','13.7','13.8','13.9','14.0','14.1','14.2','14.3','14.4','14.5','14.6','14.7', '14.8','14.9','15','15.1');


my @voltage_upper_level = ('-','210','215','220','225','230','235','240','245','250','255','260','265');
my @voltage_low_level = ('-','165','170','175','180','185','190','195','200','205','210','215','220');
my @voltage_generated = ('-','100','110','120','130','140','150','160','170','180','190','200','210','220','230','240');
my @hour_labels = ('-','00','01','02','03','04','05','06','07','08','09','10','11','12',
			'13','14','15','16','17','18','19','20', '21','22','23');
my @minute_labels = ('-','00','10','20','30','40','50');

#my $disp{$lang}{'МАП SIN "ЭНЕРГИЯ"'}
my %disp = (
	'ru_RU.UTF-8' => {
		'МАП SIN "ЭНЕРГИЯ"' => 'МАП SIN "ЭНЕРГИЯ"',
		'Режим: ' => 'Режим: ',
		'U вход.: ' => 'U вход.: ',
		'ОС:' => 'ОС:',
		'Установлено АКБ: ' => 'Установлено АКБ: ',
		'Тип АКБ: ' => 'Тип АКБ: ',
		'Частота U вых.: ' => 'Частота U вых.: ',
	},
	'en_US.UTF-8' => {
		'МАП SIN "ЭНЕРГИЯ"' => 'MAC "ENERGIA" SINE',
		'Режим: ' => 'Mode: ',
		'U вход.: ' => 'Vin grid: ',
		'ОС:' => 'OS:',
		'Установлено АКБ: ' => 'Batt. capacity: ',
		'Тип АКБ: ' => 'Batt. type:',
		'Частота U вых.: ' => 'Frequency Vout:',
	} 
);

my %EnErrSis = (
	1 => 'Не работает SPI', 2 => 'Ошибка записи в EEPROM', 4 => 'Кто-то другой вызвал интерапт',
	8 => 'Не работает датчик температуры', 0x10 => 'Друга системная ошибка', 0x20 => 'Несоответствие перемычек',
);

my %EnErrJobM = (
	1 => 'Асс полностью разряжен - мгновенное', 2 => 'Превышение напряжения на Acc',
	4 => 'Превышение напряжения на Acc во время заряда', 8 => 'Ток KZ по Acc',
	0x10 => 'Залипло основное реле, т.к. пропускает сеть (потому как выход равен входу) хотя не должна',
	0x20 => 'Ток КЗ по сети',
	0x40 => 'На выходе розетки постороннее напряжение либо залипло зарядное реле',
	0x80 => 'Произошел ресет',
);

my %EnErrJob = (
	1 => 'Асс полностью разряжен', 2 => 'Ток перегрузки', 4 => 'Номинальный ток - работаем огранниченное время',
	8 => 'Превышение температуры', 0x10 => 'Кулер не крутится', 0x20 => 'Ток перегрузки по сети',
	0x40 => 'Был сбой в режиме работы (например по сбросу питания или сильной помехи)',
);

my %EnWarning = (
	1 => 'Нет действия для комбинации клавиш', 2 => 'Сетевое напряжение вышло за пределы',
	4 => 'Сеть на выходной розетке или большие выбросы от нагрузки',
	8 => 'Локальная потеря данных от SPI',
	0x10 => 'Залипла кнопка', 0x20 => 'Переход на заряд не возможен - нет сети',
	0x40 => 'Мощность нагрузки за пределами дизеля, но меньше мощности МАР',
);
my %EnStateUAcc = (
	'ru_RU.UTF-8' => {
        	0 => 'низкое',
        	1 => 'минимальное',
        	2 => 'среднее',
        	3 => 'нормальное',
        	4 => 'максимальное',
        	5 => 'превышено',
		'н/д' => 'нет данных',
	},
        'en_US.UTF-8' => {
		0 => 'low',
                1 => 'minimal',
                2 => 'average',
                3 => 'normal',
                4 => 'max',
                5 => 'overcharge',
                'н/д' => 'n/a',
        }
);

my %MapStatuses = (
	'ru_RU.UTF-8' => {
		0 => 'выключено без сети',
		1 => 'выключено с сетью',
		2 => 'питание от АКБ', #'включено без сети [работает МАП]',
		3 => 'включено с сетью',
		4 => 'включено с зарядом',
		5 => 'выключено при неоходимости подзаряд [сеть пропускает на выход]',
		33 => "Нет соединения с МАП-ом ($port_not_opening)",
        },
        'en_US.UTF-8' => {
		0 => 'Off w/o grid',
                1 => 'Off w/grid',
                2 => 'Battery powered', #'включено без сети [работает МАП]',
                3 => 'On w/grid',
                4 => 'On w/charge',
                5 => 'Off w/charge on demand [grid powered]',
                33 => "Lack of communication w/mac ($port_not_opening)",
        }

);

my %batt_types = (
	'ru_RU.UTF-8' => {
		'0' => 'Кислотный Рег', 
		1 => 'Гелевый/AGM T', 
		2 => 'Кислотный T', 
		3 => 'Щелочной', 
	},
	'en_US.UTF-8' => {
		'0' => 'Acid Reg', 
                1 => 'AGM T', 
                2 => 'Acid T', 
                3 => 'Alcaline',
	}
);

my $logcount=1;
my %log;
my %lastlog;
my @mapcommand =('P', 'C', 'R', 'D', '4', '0', '0', '6', 'C', "\r", "\n");

###############################################charting vars
my ($chart, $chart2, $chart3,  $mwc);
my @chart_periods;
if ($lang eq 'en_US.UTF-8'){
	@chart_periods =(['Charts' => '1'], ['24 hours'=>'2'],['week' => '3'],['month'=>'4'],['6 months'=>'5'],['entire'=>'6']);
} else {
	@chart_periods =(['График' => '1'], ['24 часа'=>'2'],['неделя' => '3'],['месяц'=>'4'],['6 мес'=>'5'],['все'=>'6']);
}
my ($chart_period_type, $font_counter_ch, $chart_exit);
my $chart_type = 'p';
my ($old_interval, $xlabelskip);
my ($zoom, $zoomsign);
my (@data, @data2, @data3);
my ($minid, $maxid);
########################################end of charting vars

my $mw = MainWindow->new;
#$mw->waitVariable(\$qty); 
#$mw->overrideredirect(1);
if ($lang eq 'en_US.UTF-8'){
	$mw -> title ('MAC monitoring & setup');
} else {
	$mw -> title ('Мониторинг и настройки МАП');
}

$mw->optionAdd("*font", "*utf-8");

my $ico = $mw->Photo(-data => &encoded_ico, -format => 'png');
$mw->Icon(-image => $ico);
#$mw->setIcon(-data => &encoded_ico);


if ($os =~ /Win/i){
        eval "use Win32::SerialPort; 1" or die $@;
} else {
        eval "use Device::SerialPort; 1" or die $@;
}
if ($font_global_set == 1){
	if ($os =~ /Win/i){
        	$mw->fontCreate('medium', -family=>'courier', -weight=>'bold', -size=>int(-14*14/10));
        	$mw->fontCreate('ticks', -family=>'courier', -weight=>'normal', -size=>int(-11*11/10));
        	$mw->fontCreate('dial_rus', -family => 'ariel', -weight => 'normal', -size=>int(-14*14/10));
        	$mw->fontCreate('logo_rus', -family => 'ariel', -weight => 'bold', -size=>int(-17.5*17.5/10));
        	$mw->fontCreate('giant_logo_rus', -family => 'ariel', -weight => 'bold', -size=>int(-17*17/10));
        	$mw->fontCreate('giant_logo_eng', -family => 'ariel', -weight => 'bold', -size=>int(-18*18/10));
        	#$mw->fontCreate('bar_rus', -family => 'ariel', -weight => 'normal', -size=>int(-11.5*11.5/10));
        	$mw->fontCreate('bar_rus', -family => 'ariel', -weight => 'normal', -size=>int(-12.0*12/10));
        	$mw->fontCreate('info_rus', -family => 'ariel', -weight => 'bold', -size=>int(-13*13/10));
	} else {
        	$mw->fontCreate('medium', -family=>'courier', -weight=>'bold', -size=>int(-14*14/10));
        	$mw->fontCreate('ticks', -family=>'courier', -weight=>'normal', -size=>int(-11*11/10));
        	$mw->fontCreate('dial_rus', -family => 'nimbus sans l', -weight => 'normal', -size=>int(-14*14/10));
        	$mw->fontCreate('logo_rus', -family => 'nimbus sans l', -weight => 'bold', -size=>int(-17.5*17.5/10));
        	$mw->fontCreate('giant_logo_rus', -family => 'nimbus sans l', -weight => 'bold', -size=>int(-17*17/10));
        	$mw->fontCreate('giant_logo_eng', -family => 'helvetica', -weight => 'bold', -size=>int(-18*18/10));
        	#$mw->fontCreate('bar_rus', -family => 'nimbus sans l', -weight => 'normal', -size=>int(-11.5*11.5/10));
        	$mw->fontCreate('bar_rus', -family => 'nimbus sans l', -weight => 'normal', -size=>int(-12*12/10));
        	$mw->fontCreate('info_rus', -family => 'nimbus sans l', -weight => 'bold', -size=>int(-13*13/10));
	}
}
$font_global_set = 2;

my $c = $mw->Canvas( -width => $x_max, -height => $y_max, -bd => 1,-relief => 'sunken', -background => '#0f134d', scrollregion=>[0,0,$x_max,$y_max],)->grid;
$mw->resizable(0,0);

my $coords_curs;

#my $text_logo_1 = $c->createText(15, 15,-text=>'МАП SIN "ЭНЕРГИЯ"', -font=>'giant_logo_rus', -fill=>'#afb3b0',-anchor=>'nw',-tags => ['logo']);

my $text_logo_1;
if ($lang eq 'en_US.UTF-8'){
	$text_logo_1 = $c->createText(15, 15,-text=>'MAC "ENERGIA" SINE', -font=>'giant_logo_rus', -fill=>'#afb3b0',-anchor=>'nw',-tags => ['logo_eng']);
} else {
	$text_logo_1 = $c->createText(15, 15,-text=>'МАП SIN "ЭНЕРГИЯ"', -font=>'giant_logo_rus', -fill=>'#afb3b0',-anchor=>'nw',-tags => ['logo_eng']);
}



#&connect unless ($disconnected);
#my $map_version = &readmap('6') unless ($port_not_opening); #power
#my %device_qty = ( '0' => '1','1'=>'2','2'=>'4');
#$qty = $device_qty{$map_version};


my $map_versions_text = $c->createText(15, 45, -text=>$map_versions_changes, -font=>'bar_rus', -fill=>'#afb3b0', -anchor=>'nw',-tags => ['logo_stats']);

my $map_params = $c->createText(350, 20,-text=> $map_params_text, -font=>'info_rus', -fill=>'#afb3b0',-anchor=>'nw',-tags => ['logo']);

my $text_os = $c->createText(348,95,-text=>"$disp{$lang}{'ОС:'} $os", -font=>'bar_rus', -fill=>'#afb3b0',-anchor=>'ne',-tags => ['os']);

my $status_map_sign = $c->createText(330, 15, -text => $disp{$lang}{'Режим: '} , -font=>'info_rus', -fill=>'#afb3b0',-anchor=>'nw',-tags => ['status_map']);
my $status_map = $c->createText(400, 15, -text => $status , -font=>'info_rus', -fill=>'#afb3b0',-anchor=>'nw',-tags => ['status_map']);

my $status_volt_in_sign = $c->createText(330, 35, -text => $disp{$lang}{'U вход.: '} , -font=>'info_rus', -fill=>'#afb3b0',-anchor=>'nw',-tags => ['volt_in']);
my $status_volt_in = $c->createText(400, 35, -text => $status_volt_in_text , -font=>'info_rus', -fill=>'#afb3b0',-anchor=>'nw',-tags => ['volt_in']);

my $gauge1 = $c->createImage(15, 85, -image => $mw->Photo(-data => &encoded_gif, -format => 'gif'), -anchor => 'nw', -tags => ['gauge1']); #gauge 300x173
my $gauge2 = $c->createImage(327, 85, -image => $mw->Photo(-data => &encoded_gif, -format => 'gif'), -anchor => 'nw', -tags => ['gauge2']); #gauge 2 

#needles
$c->createLine(166, 250, 166, 250, -tags => ['needle1'], -arrowshape => [ 6, 6, 0 ], -arrow => 'last', -width => 5, -fill => 'white',);
$c->createLine(475, 250, 475, 250, -tags => ['needle2'], -arrowshape => [ 6, 6, 0 ],-arrow => 'last', -width => 5, -fill => 'white',);

#gauge1 ticks V acc 12 v...9-15v

my ($x_shift, $y_shift);
#my $dial_0 = $c->createText( 56, 233, -text  => 9*$qty, -font  => 'ticks', -fill  => '#f1f3f0', -anchor => 'nw');
#my $dial_16 = $c->createText( 72, 180, -text  => 10*$qty, -font  => 'ticks', -fill  => '#f1f3f0', -anchor => 'nw');
#my $dial_33 = $c->createText( 111, 147, -text  => 11*$qty, -font  => 'ticks', -fill  => '#f1f3f0', -anchor => 'nw');
#my $dial_50 = $c->createText( 160, 134, -text  => 12*$qty, -font  => 'ticks', -fill  => '#f1f3f0', -anchor => 'nw');
#my $dial_66 = $c->createText( 210, 148, -text  => 13*$qty, -font  => 'ticks', -fill  => '#f1f3f0', -anchor => 'nw');
#my $dial_79 = $c->createText( 247, 181, -text  => 14*$qty, -font  => 'ticks', -fill  => '#f1f3f0', -anchor => 'nw');

#gauge2 ticks V ac out 190-250v
my $dial_2_0 = $c->createText( 368, 233, -text  => '190', -font  => 'ticks', -fill  => '#f1f3f0', -anchor => 'nw');
my $dial_2_16 = $c->createText( 386, 180, -text  => '200', -font  => 'ticks', -fill  => '#f1f3f0', -anchor => 'nw');
my $dial_2_33 = $c->createText( 426, 147, -text  => '210', -font  => 'ticks', -fill  => '#f1f3f0', -anchor => 'nw');
my $dial_2_50 = $c->createText( 468, 134, -text  => '220', -font  => 'ticks', -fill  => '#f1f3f0', -anchor => 'nw');
my $dial_2_66 = $c->createText( 522, 148, -text  => '230', -font  => 'ticks', -fill  => '#f1f3f0', -anchor => 'nw');
my $dial_2_79 = $c->createText( 555, 181, -text  => '240', -font  => 'ticks', -fill  => '#f1f3f0', -anchor => 'nw');

my ($dial_rus1, $dial_rus2);
if ($lang eq 'en_US.UTF-8'){
	$dial_rus1 = $c->createText( 215, 225, -text  => 'V Batt', -font  => 'dial_rus', -fill  => '#10f0f0', -anchor => 'nw'); #Vakb	
	$dial_rus2 = $c->createText( 520, 225, -text  => 'Vac out', -font  => 'dial_rus', -fill  => '#10f0f0', -anchor => 'nw');  #V	
} else {
	$dial_rus1 = $c->createText( 215, 225, -text  => 'U акб', -font  => 'dial_rus', -fill  => '#10f0f0', -anchor => 'nw'); #Vakb
	$dial_rus2 = $c->createText( 535, 225, -text  => 'U~', -font  => 'dial_rus', -fill  => '#10f0f0', -anchor => 'nw');  #V~
}

my $voltage_acc_text = $c->createText(65, 225, -text  => $voltage_acc, -font  => 'dial_rus',
	-fill  => '#10f0f0', -anchor => 'nw', -tags => ['text']);
my $voltage_socket_out_text = $c->createText( 395, 225, -text  => $voltage_socket_out, -font  => 'dial_rus',
	-fill  => '#10f0f0', -anchor => 'nw', -tags => ['text2']);

my $frame_batt = $mw->LabFrame( -background => '#0f134d', -foreground => '#10f0f0', -font => 'bar_rus', -labelside => 'acrosstop',
	-labelvariable => \$Cacc_text,  #Заголовок рамки
	-height => 27,         		#Высота рамки
        -width  => 295,  		#Ширина рамки
)->place( -x => 15, -y => 262);  	#Положение на странице программы 

my $progress_batt = $frame_batt->ProgressBar(
        -highlightbackground => '#0f134d', -highlightcolor => '#0f134d', -highlightthickness => 0, -borderwidth => 1, -relief => 'sunken',
	-length => 285, -width => 18, -padx => 1, -pady => 1,
	-variable => \$Cacc,
	-colors => [0 => 'orangered2', 30 => 'darkblue' , 70 => '#10f0f0'],
	-resolution => 1, -blocks => 12, -anchor => 'w',-from => 0, -to => 100,
)->place(-x => 5, -y => 7,);

my $status_batt_text_sign = $c->createText(335, 317, -text => $disp{$lang}{'Установлено АКБ: '} , -font=>'info_rus', -fill=>'#afb3b0',-anchor=>'nw');
my $status_batt_text = $c->createText(490, 317, -text => $status_batt_cap , -font=>'info_rus', -fill=>'#afb3b0',-anchor=>'nw');
my $status_batt_type_text_sign = $c->createText(335, 353, -text => $disp{$lang}{'Тип АКБ: '} , -font=>'info_rus', -fill=>'#afb3b0',-anchor=>'nw');
my $status_batt_type_text = $c->createText(420, 353, -text => $status_batt_type , -font=>'info_rus', -fill=>'#afb3b0',-anchor=>'nw');

my $frame_temp_batt = $mw->LabFrame( -background => '#0f134d', -foreground => '#10f0f0', -font => 'bar_rus', -labelside => 'acrosstop',
        -labelvariable => \$temp_batt_text,  #Заголовок рамки
        -height => 27,                  #Высота рамки
        -width  => 295,                 #Ширина рамки
)->place( -x => 15, -y => 328);         #Положение на странице программы 

my $progress_temp_batt = $frame_temp_batt->ProgressBar(
        -highlightbackground => '#0f134d', -highlightcolor => '#0f134d', -highlightthickness => 0, -borderwidth => 1, -relief => 'sunken',
        -length => 285, -width => 18, -padx => 1, -pady => 1,
        -variable => \$temp_batt,
        -colors => [ -50 => '#10f0f0', -10=> 'darkblue', 50 => 'orangered2'],
        -resolution => 1, -blocks => 12, -anchor => 'w',-from => -50, -to => 50,
)->place(-x => 5, -y => 7,);

my $frame_power = $mw->LabFrame( -background => '#0f134d', -foreground => '#10f0f0', -font => 'bar_rus', -labelside => 'acrosstop',
        -labelvariable => \$power_text,  #Заголовок рамки
        -height => 27,                  #Высота рамки
        -width  => 295,                 #Ширина рамки
)->place( -x => 327, -y => 262);         #Положение на странице программы
my $progress_power = $frame_power->ProgressBar(
        -highlightbackground => '#0f134d', -highlightcolor => '#0f134d', -highlightthickness => 0, -borderwidth => 1, -relief => 'sunken',
        -length => 285, -width => 18, -padx => 1, -pady => 1,
        -variable => \$powermeter,
        -colors => [ 0 => '#10f0f0', 50=> 'darkblue', 150 => 'orangered2'],
        -resolution => 1, -blocks => 12, -anchor => 'w',-from => 0, -to => 150,
)->place(-x => 5, -y => 7,);





my $temp_transistors;
if ($lang eq 'en_US.UTF-8'){
	$temp_transistors = $c->createText(20, 392, -text => 'Transistor temp.: ' , -font=>'bar_rus', -fill=>'#10f0f0',-anchor=>'nw',-tags => ['status_map']);
} else {
	$temp_transistors = $c->createText(20, 392, -text => 'Транзисторы: ' , -font=>'bar_rus', -fill=>'#10f0f0',-anchor=>'nw',-tags => ['status_map']);
}
my $temp_transistors_sign = $c->createText(140, 392, -text => $temp_transistors_text , -font=>'bar_rus', -fill=>'#10f0f0',-anchor=>'nw',-tags => ['status_map']);

my $temp_tor;
if ($lang eq 'en_US.UTF-8'){
	$temp_tor = $c->createText(175, 392, -text => 'Transformer: ' , -font=>'bar_rus', -fill=>'#10f0f0',-anchor=>'nw',-tags => ['status_map']);
} else {
	$temp_tor = $c->createText(175, 392, -text => 'Темп. тора: ' , -font=>'bar_rus', -fill=>'#10f0f0',-anchor=>'nw',-tags => ['status_map']);
}
my $temp_tor_sign = $c->createText(270, 392, -text => $temp_tor_text , -font=>'bar_rus', -fill=>'#10f0f0',-anchor=>'nw',-tags => ['status_map']);

my $status_freq_sign = $c->createText(335, 385, -text => $disp{$lang}{'Частота U вых.: '} , -font=>'info_rus', -fill=>'#afb3b0',-anchor=>'nw',-tags => ['status_map']);
my $status_freq = $c->createText(490, 385, -text => $status_freq_text , -font=>'info_rus', -fill=>'#afb3b0',-anchor=>'nw',-tags => ['status_map']);


my ($button1, $button2, $button3, $button4);
if ($lang eq 'en_US.UTF-8'){
	$button1 = $mw->Photo(-data => &encoded_but1eng, -format => 'gif');
        $button2 = $mw->Photo(-data => &encoded_but2eng, -format => 'gif');
        $button3 = $mw->Photo(-data => &encoded_but_exit1eng, -format => 'gif');
        $button4 = $mw->Photo(-data => &encoded_but_exit2eng, -format => 'gif');
} else {
	$button1 = $mw->Photo(-data => &encoded_but1, -format => 'gif');
	$button2 = $mw->Photo(-data => &encoded_but2, -format => 'gif');
	$button3 = $mw->Photo(-data => &encoded_but_exit1, -format => 'gif');
	$button4 = $mw->Photo(-data => &encoded_but_exit2, -format => 'gif');
}


my $but1 = $c->createImage(63, 415, -image => $button1, -anchor => 'nw', -tags => ['but1']);

$c->bind( $but1, '<Enter>', sub {$c->itemconfigure( $but1, -image => $button2); });
$c->bind( $but1, '<Leave>', sub {$c->itemconfigure( $but1, -image => $button1); });
$settings = "";
$c->bind( $but1, '<ButtonPress>', sub{ $settings=1; &tabbed; } );

my $but2 = $c->createImage(390, 415, -image => $button3, -anchor => 'nw', -tags => ['but2']);

$c->bind( $but2, '<Enter>', sub {$c->itemconfigure( $but2, -image => $button4); });
$c->bind( $but2, '<Leave>', sub {$c->itemconfigure( $but2, -image => $button3); });
$disconnected = "";
$c->bind( $but2, '<ButtonPress>', sub {
	$disconnected = 1; #exit from the main sub
	&disconnect; 
});




my $chartlogo1 = $mw->Photo(-data => &encoded_chartlogo1, -format => 'gif');
my $chartlogo2 = $mw->Photo(-data => &encoded_chartlogo2, -format => 'gif');

my $chartlogos = $c->createImage(588, 355, -image => $chartlogo1, -anchor => 'nw', -tags => ['chartlogos']);

$c->bind( $chartlogos, '<Enter>', sub {$c->itemconfigure( $chartlogos, -image => $chartlogo2); });
$c->bind( $chartlogos, '<Leave>', sub {$c->itemconfigure( $chartlogos, -image => $chartlogo1); });
$c->bind( $chartlogos, '<ButtonPress>', sub {&chart('2')});

my $charts_type_frame = $c->Frame(-background => '#0f134d')->place(-x=>544, -y=>400, -anchor => 'nw');
#$charts_type_frame->Label(-font => 'tab_rus_bold', -text => 'Форма Сигнала:') ->pack(-side=>'left'); 
$charts_type_frame->Radiobutton(-background => '#0f134d', -highlightbackground =>'#0f134d', -highlightcolor=>'#0f134d', 
	-activebackground=>'#0f134d', -activeforeground=>'#0f134d', -borderwidth =>0, 
	-foreground=>'#10f0f0', -font => 'bar_rus', -text => 'P', -value => 'p', -variable => \$chart_type)->pack(-side => 'top');
$charts_type_frame->Radiobutton(-background => '#0f134d', -highlightbackground =>'#0f134d', -highlightcolor=>'#0f134d',
	-activebackground=>'#0f134d', -activeforeground=>'#0f134d', -borderwidth =>0, 
        -foreground=>'#10f0f0', -font => 'bar_rus', -text => 'I', -value => "i", -variable => \$chart_type)->pack(-side => 'bottom');

my $charts_frame = $mw->Optionmenu( -options => [@chart_periods], -variable => \$chart_period_type,
		-font=>'bar_rus', -background => '#0f134d', -foreground => '#10f0f0', -indicatoron => 0, -justify=> 'center',  
               -command => [sub {&chart($chart_period_type)}])->place(-x=>537, -y=>460, -anchor => 'nw');



my $banner;
if ($lang eq 'en_US.UTF-8'){
	$banner = $mw->Photo(-data => &encoded_banner_eng, -format => 'gif');
} else {
	$banner = $mw->Photo(-data => &encoded_gif_banner, -format => 'gif');	
}
my $banner_entire = $c->createImage(10, 497, -image => $banner, -anchor => 'nw', -tags => ['banner']);
if ($os =~ /Win/i){ #system("start http://$url")
        eval "use Win32::FileOp qw(ShellExecute); 1" or die $@; #ShellExecute('http://...');
        eval {
              if ($lang eq 'en_US.UTF-8'){
			$c->bind( $banner_entire, '<ButtonPress>', sub {system("start /b http://macenergia.com")});	
		} else {
			  $c->bind( $banner_entire, '<ButtonPress>', sub {system("start /b http://invertors.ru")});
		}	
        };
} else {
	if ($lang eq 'en_US.UTF-8'){
		$c->bind( $banner_entire, '<ButtonPress>', sub {system("firefox http://macenergia.com")})	
	} else {
		$c->bind( $banner_entire, '<ButtonPress>', sub {system("firefox http://invertors.ru")});
	}
}
$c->bind( $banner_entire, '<Any-Enter>', sub {$banner_entire=$c->configure(-cursor=>'hand2')});
$c->bind( $banner_entire, '<Any-Leave>', sub {$banner_entire=$c->configure(-cursor=>'')});

&connect unless ($disconnected);
&readings;
#my $map_version = &readmap('6') unless ($port_not_opening); #power
#my %device_qty = ( '0' => '1','1'=>'2','2'=>'4');
#$qty = $device_qty{$map_version};
$qty = 1 unless ($qty);

#print "qty=$qty\n";

my $dial_0 = $c->createText( 56, 233, -text  => 9*$qty, -font  => 'ticks', -fill  => '#f1f3f0', -anchor => 'nw');
my $dial_16 = $c->createText( 72, 180, -text  => 10*$qty, -font  => 'ticks', -fill  => '#f1f3f0', -anchor => 'nw');
my $dial_33 = $c->createText( 111, 147, -text  => 11*$qty, -font  => 'ticks', -fill  => '#f1f3f0', -anchor => 'nw');
my $dial_50 = $c->createText( 160, 134, -text  => 12*$qty, -font  => 'ticks', -fill  => '#f1f3f0', -anchor => 'nw');
my $dial_66 = $c->createText( 210, 148, -text  => 13*$qty, -font  => 'ticks', -fill  => '#f1f3f0', -anchor => 'nw');
my $dial_79 = $c->createText( 247, 181, -text  => 14*$qty, -font  => 'ticks', -fill  => '#f1f3f0', -anchor => 'nw');

@voltage_acc_charge_end = map {if (looks_like_number($_)){$_*$qty} else {$_}} @voltage_acc_charge_end;
@voltage_acc_sust_charge = map {if (looks_like_number($_)){$_*$qty} else {$_}} @voltage_acc_sust_charge;
@voltage_acc_charge_start = map {if (looks_like_number($_)){$_*$qty} else {$_}} @voltage_acc_charge_start;
@voltage_acc_gen_end = map {if (looks_like_number($_)){$_*$qty} else {$_}} @voltage_acc_gen_end;
@voltage_min_extra_gen_level = map {if (looks_like_number($_)){$_*$qty} else {$_}} @voltage_min_extra_gen_level;



sub tabbed {
	return if Exists($tbd);

	#my $bg_frame = $mw -> Frame() -> place(-x=>0, -y=>0, -anchor => 'nw');
	#my $bg_static = $bg_frame->Photo(-file => '/home/pasha/perl/tk/bg_static.png', -format => 'png');
	#my $shade = $c->createImage(0, 0, -image => $bg_static, -anchor => 'nw', -tags => ['steamy']);
	#$c->raise($bg_static);
	#$frame_power->destroy;
	#$frame_temp_batt->destroy;
	#$frame_batt->destroy;

	$font_counter++;
	$tbd = $mw -> Toplevel();
	$tbd->Icon(-image => $ico);
	$tbd -> geometry( "750x455" ); #460
	$tbd -> optionAdd("*font", "*utf-8");
	#$tbd->protocol(WM_DELETE_WINDOW => sub { $c->lower($shade); $tbd->destroy;  });
	#$nb = $mw->NoteBook(-font => 'Courier 10 bold')->pack
	#$tbd -> optionAdd('*font', -family => 'nimbus sans l', -weight => 'normal', -size=>int(-11*11/10));
	$tbd->fontCreate('tab_rus', -family => 'nimbus sans l', -weight => 'normal', -size=>int(-13*13/10)) unless ($font_counter >1);
	$tbd->fontCreate('tab_rus_bold', -family => 'nimbus sans l', -weight => 'bold', -size=>int(-14*14/10)) unless ($font_counter >1);
	$tbd->fontCreate('tab_rus_tiny', -family => 'nimbus sans l', -weight => 'bold', -size=>int(-9*9/10)) unless ($font_counter >1);
	$tbd->fontCreate('tab_rus_small', -family => 'nimbus sans l', -weight => 'bold', -size=>int(-10*10/10)) unless ($font_counter >1);
	if ($lang eq 'en_US.UTF-8'){
		$tbd -> title ('MAC Preferences');
	} else {
		$tbd -> title ('Настройки МАП');
	}
	#$tbd->bind("<MouseWheel>");

	my $book = $tbd->NoteBook(-font=>'tab_rus', -ipady=>15, )->pack( -fill=>'both');
	
	my ($tab1, $tab2, $tab3, $tab4, $tab5);
	if ($lang eq 'en_US.UTF-8'){
		$tab1 = $book->add( "Sheet 1", -wraplength=>'100', -label=>'Generation');
                $tab2 = $book->add( "Sheet 2", -wraplength=>'100', -label=>'Battery');
                $tab3 = $book->add( "Sheet 3", -wraplength=>'100', -label=>'Grid');
                $tab4 = $book->add( "Sheet 4", -wraplength=>'100', -label=>'More');
                $tab5 = $book->add( "Sheet 5", -wraplength=>'100',-label=>'Help');
	} else {
		$tab1 = $book->add( "Sheet 1", -wraplength=>'100', -label=>'Генерация МАП');
		$tab2 = $book->add( "Sheet 2", -wraplength=>'100', -label=>'Параметры АКБ');
		$tab3 = $book->add( "Sheet 3", -wraplength=>'100', -label=>'Сеть');
		$tab4 = $book->add( "Sheet 4", -wraplength=>'100', -label=>'Другие Опции');
		$tab5 = $book->add( "Sheet 5", -wraplength=>'100',-label=>'Помощь');
	}
	#my ($starttime, $raisetime);

	my $signal_form_frame = $tab1->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'15');
	if ($lang eq 'en_US.UTF-8'){
		$signal_form_frame->Label(-font => 'tab_rus_bold', -text => 'Signal form:') ->pack(-side=>'left');	
	} else {
		$signal_form_frame->Label(-font => 'tab_rus_bold', -text => 'Форма Сигнала:')
		->pack(-side=>'left'); #addr 0x138 = 312 //0 - Чистый Sin 5%, 1- Оптимальный Sin 5% до 200В, 2 -Pmx Sin 20%
	}
	$signal_form_frame->Radiobutton(-font => 'tab_rus', -text => 'Sin', -value => '0', -variable => \$signal_form, -command => sub {&write_map('312','0')})
		->pack(-side => 'left');
	if ($lang eq 'en_US.UTF-8'){
		$signal_form_frame->Radiobutton(-font => 'tab_rus', -text => 'Optimal Sine', -value => "1", -variable => \$signal_form, 
                -command => sub {&write_map('312','1')}) ->pack(-side => 'left');
	} else {
        	$signal_form_frame->Radiobutton(-font => 'tab_rus', -text => 'Оптимальный Sin', -value => "1", -variable => \$signal_form, 
		-command => sub {&write_map('312','1')}) ->pack(-side => 'left');
	}
	$signal_form_frame->Radiobutton(-font => 'tab_rus', -text => 'Pmax sin', -value => "2", -variable => \$signal_form, -command => sub {&write_map('312',2)})
	->pack(-side => 'left');
	my $load_start_frame=$tab1->Frame()->pack(-side=>'top', -anchor=>'nw', -after=>$signal_form_frame, -padx=>'15');	
	if ($lang eq 'en_US.UTF-8'){
		$load_start_frame->Label(-font => 'tab_rus_bold', -text=>'Start-Generating-On-Load (' )->pack(-side => 'left');
	} else {
		$load_start_frame->Label(-font => 'tab_rus_bold', -text=>'Вкл по Нагрузке (' )->pack(-side => 'left');
	}
	$load_start_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$load_start )->pack(-side => 'left'); #0x13E = 318
	if ($lang eq 'en_US.UTF-8'){
		$load_start_frame->Label(-font => 'tab_rus_bold', -text=>' Wt)' )->pack(-side => 'left');
	} else {
		$load_start_frame->Label(-font => 'tab_rus_bold', -text=>' Вт)' )->pack(-side => 'left');	
	}
	$load_start_frame->Spinbox(-font => 'tab_rus',-from=>0, -to=>200, -increment=>10, -width=>3, -textvariable=>\$load_start,
		-command => [sub {&write_map('318', $load_start)}])->pack(-side=>'left');


	my $gen_end_frame=$tab1->Frame()->pack(-side=>'top', -anchor=>'nw', -after=>$load_start_frame, -padx=>'15');
	if ($lang eq 'en_US.UTF-8'){
		$gen_end_frame->Label(-font => 'tab_rus_bold', -text=>'Generation-Off V batt min (' )->pack(-side => 'left');
	} else {
		$gen_end_frame->Label(-font => 'tab_rus_bold', -text=>'ВыклГенерации Uакб min (' )->pack(-side => 'left');
	}
        $gen_end_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$map_voltage_acc_gen_end )->pack(-side => 'left'); #0x13d = 317
	if ($lang eq 'en_US.UTF-8'){
		$gen_end_frame->Label(-font => 'tab_rus_bold', -text=>'V): ')->pack(-side => 'left');
	} else {
		$gen_end_frame->Label(-font => 'tab_rus_bold', -text=>'В): ')->pack(-side => 'left');
	}
        $gen_end_frame->Optionmenu( -options => [@voltage_acc_gen_end], -variable => \$map_voltage_acc_gen_end, -font => 'tab_rus',
                -command => [sub {&write_voltage_acc('317', $map_voltage_acc_gen_end)}])->pack(-side=>'left');
	if ($lang eq 'en_US.UTF-8'){
		$gen_end_frame->Label(-font => 'tab_rus_bold', -text=>' Vdc')->pack(-side => 'left');
	} else {
		$gen_end_frame->Label(-font => 'tab_rus_bold', -text=>' В')->pack(-side => 'left');
	}

	my $map_voltage_frame=$tab1->Frame()->pack(-side=>'top', -anchor=>'nw', -after=>$gen_end_frame, -padx=>'15');
	if ($lang eq 'en_US.UTF-8'){
		$map_voltage_frame->Label(-font => 'tab_rus_bold', -text=>'MAC Voltage (')->pack(-side => 'left');
	} else {
		$map_voltage_frame->Label(-font => 'tab_rus_bold', -text=>'Напряжение МАП (')->pack(-side => 'left');
	}
	$map_voltage_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$map_voltage_generated )->pack(-side => 'left'); #0x13a=314
	if ($lang eq 'en_US.UTF-8'){
		$map_voltage_frame->Label(-font => 'tab_rus_bold', -text=>'V): ')->pack(-side => 'left');	
	} else {
		$map_voltage_frame->Label(-font => 'tab_rus_bold', -text=>'В): ')->pack(-side => 'left');
	}
	$map_voltage_frame->Optionmenu( -options => [@voltage_generated], -variable => \$map_voltage_generated, -font => 'tab_rus', 
		-command => [sub {&write_voltage('314', $map_voltage_generated)}])->pack(-side=>'left');
	if ($lang eq 'en_US.UTF-8'){
		$map_voltage_frame->Label(-font => 'tab_rus_bold', -text=>' Vac')->pack(-side => 'left');
	} else {
		$map_voltage_frame->Label(-font => 'tab_rus_bold', -text=>' В')->pack(-side => 'left');
	}
	my $map_voltage_frame_text=$tab1->Frame()->pack(-side=>'top', -anchor=>'nw', -after=>$map_voltage_frame, -padx=>'15');
	if ($lang eq 'en_US.UTF-8'){
		$map_voltage_frame_text->Label(-font => 'tab_rus', -text=>'Firmware versions lower 8.5 need reboot of MAC and display incorrect data!')->
                pack(-side=>'left');
	} else {
		$map_voltage_frame_text->Label(-font => 'tab_rus', -text=>'Прошивки версиий ниже 8.5 требуют перезагрузки и некорректно выдают данные!')->
		pack(-side=>'left');
	}
	my $map_voltage_frame_text2=$tab1->Frame()->pack(-side=>'top', -anchor=>'nw', -after=>$map_voltage_frame_text, -padx=>'15');
	if ($lang eq 'en_US.UTF-8'){
		$map_voltage_frame_text2->Label(-font => 'tab_rus', -text=>'Please download and install the latest firmware from macenergia.com')->
                pack(-side=>'left');
	} else {
		$map_voltage_frame_text2->Label(-font => 'tab_rus', -text=>'Скачайте и обновите прошивку: раздел "техподдрежка" сайта invertors.ru')->
                pack(-side=>'left');
	}
	my ($reset1, $reset2, $reset3);
	if ($lang eq 'en_US.UTF-8'){
		$reset1=$tab1->Button( -text=>'Reboot MAC', -command=>sub {&write_map('0','6')}, -font => 'tab_rus'
                )->pack(-side=>'left', -anchor=>'nw', -after=>$map_voltage_frame_text2, -pady=>'15', -padx=>'15');

                $reset2=$tab1->Button( -text=>'MAC PowerON', -command=>sub {&write_map('0','2')}, -font => 'tab_rus'
                )->pack(-side=>'left', -anchor=>'nw', -padx=>'15', -pady=>'15');
        
                $reset3=$tab1->Button( -text=>'MAC PowerOFF', -command=>sub {&write_map('0','1')}, -font => 'tab_rus'
                )->pack(-side=>'left', -anchor=>'nw', -padx=>'15', -pady=>'15');
	} else {
		$reset1=$tab1->Button( -text=>'Перезагрузить', -command=>sub {&write_map('0','6')}, -font => 'tab_rus' 
		)->pack(-side=>'left', -anchor=>'nw', -after=>$map_voltage_frame_text2, -pady=>'15', -padx=>'15');

		$reset2=$tab1->Button( -text=>'Вкл', -command=>sub {&write_map('0','2')}, -font => 'tab_rus'
        	)->pack(-side=>'left', -anchor=>'nw', -padx=>'15', -pady=>'15');
	
		$reset3=$tab1->Button( -text=>'ВЫкл', -command=>sub {&write_map('0','1')}, -font => 'tab_rus'
        	)->pack(-side=>'left', -anchor=>'nw', -padx=>'15', -pady=>'15');
	}


	#$tab1->Button( -text=>'Выход', -command=>[$tbd => 'destroy'] )->pack(-side=>'top', -anchor=>'center', -after=>$reset, -pady=>'15');



	my $acc_type_frame = $tab2->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'15');			#tab 2
	if ($lang eq 'en_US.UTF-8'){
		$acc_type_frame->Label(-font => 'tab_rus_bold', -text => 'Battery type:')
                ->pack(-side=>'left');
	} else {
		$acc_type_frame->Label(-font => 'tab_rus_bold', -text => 'Тип АКБ:')
		->pack(-side=>'left'); #define EE_LCD_AccType 0- Кислотный Рег, 1- Гелевый/AGM T , 2- Кислотный T, //3- Щелочной
	}
	if ($lang eq 'en_US.UTF-8'){
		$acc_type_frame->Radiobutton(-font => 'tab_rus', -text => 'Acid Reg', -value => '0', -variable => \$acc_type,
                -command => sub {&write_map('384','0')})
                ->pack(-side=>'left');
		$acc_type_frame->Radiobutton(-font => 'tab_rus', -text => 'Gel/AGM T', -value => '1', -variable => \$acc_type, -command => sub {&write_map('384','1')})
                ->pack(-side=>'left');
                $acc_type_frame->Radiobutton(-font => 'tab_rus', -text => 'Acid T', -value => '2', -variable => \$acc_type, -command => sub {&write_map('384','2')})
                ->pack(-side=>'left');
                $acc_type_frame->Radiobutton(-font => 'tab_rus', -text => 'Alcaline', -value => '3', -variable => \$acc_type,
                -command => sub {&write_map('384','3')})
                ->pack(-side=>'left');
	} else {
		$acc_type_frame->Radiobutton(-font => 'tab_rus', -text => 'Кислотный Рег', -value => '0', -variable => \$acc_type,
                -command => sub {&write_map('384','0')})
                ->pack(-side=>'left');
		$acc_type_frame->Radiobutton(-font => 'tab_rus', -text => 'Гелевый/AGM T', -value => '1', -variable => \$acc_type, -command => sub {&write_map('384','1')})
		->pack(-side=>'left');
		$acc_type_frame->Radiobutton(-font => 'tab_rus', -text => 'Кислотный Т', -value => '2', -variable => \$acc_type, -command => sub {&write_map('384','2')})
		->pack(-side=>'left');
		$acc_type_frame->Radiobutton(-font => 'tab_rus', -text => 'Щелочной', -value => '3', -variable => \$acc_type, 
		-command => sub {&write_map('384','3')})
		->pack(-side=>'left');
	}
	my $acc_type_wording_frame = $tab2->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'5', -after=>$acc_type_frame);
        
	my $acc_charge_start_frame = $tab2->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'15', -after=>$acc_type_frame);
	if ($lang eq 'en_US.UTF-8'){
		$acc_charge_start_frame->Label(-font => 'tab_rus_bold', -text=>'* Start Charge at (' )->pack(-side=>'left');
	} else {
		$acc_charge_start_frame->Label(-font => 'tab_rus_bold', -text=>'* Старт Заряда (' )->pack(-side=>'left'); #0x16c
	}
        $acc_charge_start_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$map_acc_charge_start )->pack(-side => 'left'); #0x187 = 391
	if ($lang eq 'en_US.UTF-8'){
		$acc_charge_start_frame->Label(-font => 'tab_rus_bold', -text=>'V): ')->pack(-side => 'left');
	} else {
	        $acc_charge_start_frame->Label(-font => 'tab_rus_bold', -text=>'В): ')->pack(-side => 'left');
        }
	$acc_charge_start_frame->Optionmenu( -options => [@voltage_acc_charge_start], -variable => \$map_acc_charge_start, -font => 'tab_rus',
                -command => [sub {&write_voltage_acc('391', $map_acc_charge_start)}])->pack(-side=>'left');
	if ($lang eq 'en_US.UTF-8'){
		$acc_charge_start_frame->Label(-font => 'tab_rus_bold', -text=>' Vdc')->pack(-side => 'left');
	} else {
        	$acc_charge_start_frame->Label(-font => 'tab_rus_bold', -text=>' В')->pack(-side => 'left');
	}
        my $acc_charge_sust_frame = $tab2->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'15', -after=>$acc_charge_start_frame);
	if ($lang eq 'en_US.UTF-8'){
		$acc_charge_sust_frame->Label(-font => 'tab_rus_bold', -text=>'* Sustain Charge (' )->pack(-side=>'left');
	} else {
        	$acc_charge_sust_frame->Label(-font => 'tab_rus_bold', -text=>'* Поддерживающий Заряд (' )->pack(-side=>'left');
	}
        $acc_charge_sust_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$map_acc_sust_charge )->pack(-side => 'left'); #0x186 = 390
	if ($lang eq 'en_US.UTF-8'){
		$acc_charge_sust_frame->Label(-font => 'tab_rus_bold', -text=>'V): ')->pack(-side => 'left');
	} else {
        	$acc_charge_sust_frame->Label(-font => 'tab_rus_bold', -text=>'В): ')->pack(-side => 'left');
	}
        $acc_charge_sust_frame->Optionmenu(-options => [@voltage_acc_sust_charge], -variable => \$map_acc_sust_charge, -font => 'tab_rus',
                -command => [sub {&write_voltage_acc('390', $map_acc_sust_charge)}])->pack(-side=>'left');
	if ($lang eq 'en_US.UTF-8'){
		$acc_charge_sust_frame->Label(-font => 'tab_rus_bold', -text=>' Vdc')->pack(-side => 'left');
	} else {
        	$acc_charge_sust_frame->Label(-font => 'tab_rus_bold', -text=>' В')->pack(-side => 'left');
	}
        my $acc_charge_end_frame = $tab2->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'15', -after=>$acc_charge_sust_frame);
	if ($lang eq 'en_US.UTF-8'){
		$acc_charge_end_frame->Label(-font => 'tab_rus_bold', -text=>'* End Charge (' )->pack(-side=>'left')	
	} else {
        	$acc_charge_end_frame->Label(-font => 'tab_rus_bold', -text=>'* Конечный Заряд (' )->pack(-side=>'left');
	}
        $acc_charge_end_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$map_acc_charge_end )->pack(-side => 'left'); #0x185 = 389
	if ($lang eq 'en_US.UTF-8'){
		$acc_charge_end_frame->Label(-font => 'tab_rus_bold', -text=>'Vdc): ')->pack(-side => 'left');
	} else {
	        $acc_charge_end_frame->Label(-font => 'tab_rus_bold', -text=>'В): ')->pack(-side => 'left');
        }
	$acc_charge_end_frame->Optionmenu(-options => [@voltage_acc_charge_end], -variable => \$map_acc_charge_end, -font => 'tab_rus',
                -command => [sub {&write_voltage_acc('389', $map_acc_charge_end)}])->pack(-side=>'left');
	if ($lang eq 'en_US.UTF-8'){
		$acc_charge_end_frame->Label(-font => 'tab_rus_bold', -text=>' Vdc')->pack(-side => 'left');
		$acc_type_wording_frame->Label(-font => 'tab_rus', -text => '* for acid and alcaline batteries olny')
                ->pack(-side=>'left');
	} else {
	        $acc_charge_end_frame->Label(-font => 'tab_rus_bold', -text=>' В')->pack(-side => 'left');
		$acc_type_wording_frame->Label(-font => 'tab_rus', -text => '* параметры только для кислотных и щелочных АКБ')
                ->pack(-side=>'left');
	}


	my $charge_alg_frame_text = $tab2->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'15', -after=>$acc_type_wording_frame);
	if ($lang eq 'en_US.UTF-8'){
		$charge_alg_frame_text->Label(-font => 'tab_rus_bold', -text => 'Charge Type:')->pack(-side=>'left');
	} else {
		$charge_alg_frame_text->Label(-font => 'tab_rus_bold', -text => 'Алгоритм Заряда:')->pack(-side=>'left');
	}
	
	my $charge_alg_frame = $tab2->Frame()->pack(-side=>'top', -anchor=>'nw', -after=>$charge_alg_frame_text, -padx=>'35'); 
	my ($charge_alg_frame_2);
	if ($lang eq 'en_US.UTF-8'){
		$charge_alg_frame->Radiobutton(-font => 'tab_rus', -text => '2 Stages 2-currents', -value => '0', -variable => \$charge_alg,
                -command => sub {&write_map('388','0')})->pack(-side=>'left');
                $charge_alg_frame->Radiobutton(-font => 'tab_rus', -text => '3 Stages 2-currents+ExtraCharge', -value => '1', -variable => \$charge_alg,
                -command => sub {&write_map('388','1')})
                ->pack(-side=>'left', -expand=>1);
                $charge_alg_frame_2 = $tab2->Frame()->pack(-side=>'top', -anchor=>'nw', -after=>$charge_alg_frame, -padx=>'35');
                $charge_alg_frame_2->Radiobutton(-font => 'tab_rus', -text => '2 - 3 Stages 2-currents+BufferCharge', -value => '2', -variable => \$charge_alg,
                -command => sub {&write_map('388','2')})->pack(-side=>'left');
                $charge_alg_frame_2->Radiobutton(-font => 'tab_rus', -text => '4 Stages 2-currents+ExtraCharge+BufferCharge', -value => '3', -variable => \$charge_alg,
                -command => sub {&write_map('388','3')})->pack(-side=>'left');
	} else {
		$charge_alg_frame->Radiobutton(-font => 'tab_rus', -text => '2 Ступен 2-тока', -value => '0', -variable => \$charge_alg,  
		-command => sub {&write_map('388','0')})->pack(-side=>'left');
        	$charge_alg_frame->Radiobutton(-font => 'tab_rus', -text => '3 Ступени 2-тока+Дозаряд', -value => '1', -variable => \$charge_alg, 
		-command => sub {&write_map('388','1')})
		->pack(-side=>'left', -expand=>1);
		$charge_alg_frame_2 = $tab2->Frame()->pack(-side=>'top', -anchor=>'nw', -after=>$charge_alg_frame, -padx=>'35');
        	$charge_alg_frame_2->Radiobutton(-font => 'tab_rus', -text => '2 - 3 Ступени 2-тока+Буферный', -value => '2', -variable => \$charge_alg, 
		-command => sub {&write_map('388','2')})->pack(-side=>'left');
        	$charge_alg_frame_2->Radiobutton(-font => 'tab_rus', -text => '4 Ступени 2-тока+Дозаряд+Буфер', -value => '3', -variable => \$charge_alg, 
		-command => sub {&write_map('388','3')})->pack(-side=>'left');
	}

	my $current_start_charge_frame=$tab2->Frame()->pack(-side=>'top', -anchor=>'nw', -after=>$charge_alg_frame_2, -padx=>'15');
	if ($lang eq 'en_US.UTF-8'){
		$current_start_charge_frame->Label(-font => 'tab_rus_bold', -text=>'Initial Charge Current (' )->pack(-side => 'left');
                $current_start_charge_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$current_start_charge )->pack(-side => 'left'); #0x182 = 386 
                $current_start_charge_frame->Label(-font => 'tab_rus_bold', -text=>'C)' )->pack(-side => 'left');
                $current_start_charge_frame->Spinbox(-font => 'tab_rus',-from=>0.1, -to=>0.2, -increment=>0.01, -width=>4, -textvariable=>\$current_start_charge,
                -command => [sub {&write_current('386', $current_start_charge)}])->pack(-side=>'left');
	} else {
        	$current_start_charge_frame->Label(-font => 'tab_rus_bold', -text=>'Ток Заряда Начальный (' )->pack(-side => 'left');
        	$current_start_charge_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$current_start_charge )->pack(-side => 'left'); #0x182 = 386 
        	$current_start_charge_frame->Label(-font => 'tab_rus_bold', -text=>'C)' )->pack(-side => 'left');
        	$current_start_charge_frame->Spinbox(-font => 'tab_rus',-from=>0.1, -to=>0.2, -increment=>0.01, -width=>4, -textvariable=>\$current_start_charge,
                -command => [sub {&write_current('386', $current_start_charge)}])->pack(-side=>'left');	
	}

	my $current_end_charge_frame=$tab2->Frame()->pack(-side=>'top', -anchor=>'nw', -after=>$current_start_charge_frame, -padx=>'15');
	if ($lang eq 'en_US.UTF-8'){
		$current_end_charge_frame->Label(-font => 'tab_rus_bold', -text=>'Final Charge Current (' )->pack(-side => 'left');
	} else {
        	$current_end_charge_frame->Label(-font => 'tab_rus_bold', -text=>'Ток Заряда Конечный (' )->pack(-side => 'left');
	}
        $current_end_charge_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$current_end_charge )->pack(-side => 'left'); #0x183 = 387 
        $current_end_charge_frame->Label(-font => 'tab_rus_bold', -text=>'C)' )->pack(-side => 'left');
        $current_end_charge_frame->Spinbox(-font => 'tab_rus',-from=>0.01, -to=>0.06, -increment=>0.01, -width=>4, -textvariable=>\$current_end_charge,
                -command => [sub {&write_current('387', $current_end_charge)}])->pack(-side=>'left');

	my $capacity_entire_frame=$tab2->Frame()->pack(-side=>'top', -anchor=>'nw', -after=>$current_end_charge_frame, -padx=>'15');
	if ($lang eq 'en_US.UTF-8'){
		$capacity_entire_frame->Label(-font => 'tab_rus_bold', -text=>'Total Battery Capacity (' )->pack(-side => 'left');	
	} else {
	        $capacity_entire_frame->Label(-font => 'tab_rus_bold', -text=>'Суммарная Ёмкость (' )->pack(-side => 'left');
        }
	$capacity_entire_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$capacity_entire )->pack(-side => 'left'); #0x181 = 385 
        $capacity_entire_frame->Label(-font => 'tab_rus_bold', -text=>'C)' )->pack(-side => 'left');
        $capacity_entire_frame->Spinbox(-font => 'tab_rus',-from=>40, -to=>2000, -increment=>10, -width=>4, -textvariable=>\$capacity_entire,
                -command => [sub {&write_capacity('385', $capacity_entire)}])->pack(-side=>'left');

	my ($charge_on, $charge_off);
	if ($lang eq 'en_US.UTF-8'){
		$charge_on=$tab2->Button( -text=>'Charge On', -command=>sub {&write_map('0','5')}, -font => 'tab_rus'
                )->pack(-side=>'left', -anchor=>'nw', -padx=>'15', -pady=>'15');

                $charge_off=$tab2->Button( -text=>'Charge Off', -command=>sub {&write_map('0','4')}, -font => 'tab_rus'
                )->pack(-side=>'left', -anchor=>'nw', -padx=>'15', -pady=>'15');
	} else {
		$charge_on=$tab2->Button( -text=>'Включить Заряд', -command=>sub {&write_map('0','5')}, -font => 'tab_rus'
        	)->pack(-side=>'left', -anchor=>'nw', -padx=>'15', -pady=>'15');

        	$charge_off=$tab2->Button( -text=>'ВЫключить Заряд', -command=>sub {&write_map('0','4')}, -font => 'tab_rus'
        	)->pack(-side=>'left', -anchor=>'nw', -padx=>'15', -pady=>'15');
	}


	#tab3

	my $net_type_frame=$tab3->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'15'); #top of tab 3!
        if ($lang eq 'en_US.UTF-8'){
		$net_type_frame->Label(-font => 'tab_rus_bold', -text=>'Grid / Generator Power (' )->pack(-side => 'left');
                $net_type_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$net_type_label )->pack(-side => 'left'); #0x168 = 360 
                $net_type_frame->Label(-font => 'tab_rus_bold', -text=>'Wt)' )->pack(-side => 'left');
                $net_type_frame->Spinbox(-font => 'tab_rus_bold',-from=>0, -to=>9.9, -increment=>0.1, -width=>4, -textvariable=>\$net_type_label, -font => 'tab_rus',
                -command => [sub {&write_net_type('360', $net_type_label)}])->pack(-side=>'left');
	} else {
		$net_type_frame->Label(-font => 'tab_rus_bold', -text=>'Сеть / Мощность Генератора (' )->pack(-side => 'left');
        	$net_type_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$net_type_label )->pack(-side => 'left'); #0x168 = 360 
        	$net_type_frame->Label(-font => 'tab_rus_bold', -text=>'Вт)' )->pack(-side => 'left');
        	$net_type_frame->Spinbox(-font => 'tab_rus_bold',-from=>0, -to=>9.9, -increment=>0.1, -width=>4, -textvariable=>\$net_type_label, -font => 'tab_rus',
                -command => [sub {&write_net_type('360', $net_type_label)}])->pack(-side=>'left');
        	#$net_type_frame->Label(-font => 'tab_rus_bold', -text=>' [0В - Пром. Сеть]' )->pack(-side => 'left');
	}
	my $net_type_frame_extra=$tab3->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'15',-after=>$net_type_frame);
	if ($lang eq 'en_US.UTF-8'){
		$net_type_frame_extra->Label(-font => 'tab_rus', -text=>'To select "Grid" set Power level to zero' )->pack(-side => 'left');
	} else {
		$net_type_frame_extra->Label(-font => 'tab_rus', -text=>'Установите мощность равную "0" чтобы выбрать "Промышленная Сеть"' )->pack(-side => 'left');
	}
	my $time_savings_begin_frame = $tab3->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'15', -after=>$net_type_frame_extra);
        $time_savings_begin_frame->Label(-font => 'tab_rus_bold', -textvariable=> \$time_savings_begin_label)->pack(-side=>'left'); #0x16d = 365
        $time_savings_begin_hours='-';
        $time_savings_begin_minutes='-';
        $time_savings_begin_frame->Optionmenu( -options => \@hour_labels, -variable => \$time_savings_begin_hours, -font => 'tab_rus', 
		-command => [sub {&write_time('365', $time_savings_begin_hours, $time_savings_begin_minutes)}])->
                pack(-side=>'left'); 
        $time_savings_begin_frame->Label(-font => 'tab_rus_bold', -text => ' : ')->pack(-side=>'left');
        $time_savings_begin_frame->Optionmenu( -options => \@minute_labels, -variable => \$time_savings_begin_minutes, -font => 'tab_rus',
		-command => [sub {&write_time('365', $time_savings_begin_hours, $time_savings_begin_minutes)}])->
                pack(-side=>'left');

	my $time_savings_end_frame = $tab3->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'15', -after=>$time_savings_begin_frame); #$tab3
        $time_savings_end_frame->Label(-font => 'tab_rus_bold', -textvariabl => \$time_savings_end_label)->pack(-side=>'left'); #0x16e = 366
        $time_savings_end_hours='-';
        $time_savings_end_minutes='-';
        $time_savings_end_frame->Optionmenu( -options => \@hour_labels, -variable => \$time_savings_end_hours, -font => 'tab_rus',
		-command => [sub {&write_time('366', $time_savings_end_hours, $time_savings_end_minutes)}])->pack(-side=>'left');
        $time_savings_end_frame->Label(-font => 'tab_rus_bold', -text => ' : ')->pack(-side=>'left');
        $time_savings_end_frame->Optionmenu( -options => \@minute_labels, -variable => \$time_savings_end_minutes, -font => 'tab_rus', 
		-command => [sub {&write_time('366', $time_savings_end_hours, $time_savings_end_minutes)}])->pack(-side=>'left');
	
        my $u_min_extra_gen_frame = $tab3->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'15', -after=>$time_savings_end_frame);
	if ($lang eq 'en_US.UTF-8'){
		$u_min_extra_gen_frame->Label( -font => 'tab_rus_bold', -text=>'Vmin Enorced Generation (ECO) (' )->pack(-side=>'left'); #0x16c
                $u_min_extra_gen_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$map_min_extra_gen_level )->pack(-side => 'left'); #0x16c = 364
                $u_min_extra_gen_frame->Label(-font => 'tab_rus_bold', -text=>'V): ')->pack(-side => 'left');
                $u_min_extra_gen_frame->Optionmenu( -options => [@voltage_min_extra_gen_level], -variable => \$map_min_extra_gen_level, -font => 'tab_rus',
                        -command => [sub {&write_voltage_acc('364', $map_min_extra_gen_level)}])->pack(-side=>'left');
                $u_min_extra_gen_frame->Label(-font => 'tab_rus_bold', -text=>' Vac')->pack(-side => 'left');
	} else {
	        $u_min_extra_gen_frame->Label( -font => 'tab_rus_bold', -text=>'Umin Принуд Генер (' )->pack(-side=>'left'); #0x16c
        	$u_min_extra_gen_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$map_min_extra_gen_level )->pack(-side => 'left'); #0x16c = 364
        	$u_min_extra_gen_frame->Label(-font => 'tab_rus_bold', -text=>'В): ')->pack(-side => 'left');
        	$u_min_extra_gen_frame->Optionmenu( -options => [@voltage_min_extra_gen_level], -variable => \$map_min_extra_gen_level, -font => 'tab_rus',
			-command => [sub {&write_voltage_acc('364', $map_min_extra_gen_level)}])->pack(-side=>'left');
        	$u_min_extra_gen_frame->Label(-font => 'tab_rus_bold', -text=>' В')->pack(-side => 'left');
	}

	my $net_control_frame = $tab3->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'15', -after=>$u_min_extra_gen_frame); #tab3
	#$net_control_frame->Label(-textvariable => \$net_control_alg)->pack(-side=>'left');
	my ($net_control_frame_1, $net_control_frame_2);
	if ($lang eq 'en_US.UTF-8'){
		$net_control_frame->Label(-font => 'tab_rus_bold', -text => 'Grid Control:')->pack(-side=>'left'); #0x16b  
                $net_control_frame_1 = $tab3->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'35', -after=>$net_control_frame);
                $net_control_frame_1->Radiobutton(-font => 'tab_rus', -text => 'Feed + Charge', -value => '0', -variable => \$net_control_alg,  
                        -command => sub {&write_map('363','0')})->pack(-side=>'left');
                $net_control_frame_1->Radiobutton(-font => 'tab_rus', -text => 'Feed only', -value => '1', -variable => \$net_control_alg,  
                        -command => sub {&write_map('363','1')})->pack(-side=>'left');
                $net_control_frame_2 = $tab3->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'35', -after=>$net_control_frame_1);
                $net_control_frame_2->Radiobutton(-font => 'tab_rus', -text => 'Enforced Generation', -value => '2', -variable => \$net_control_alg,  
                        -command => sub {&write_map('363','2')})->pack(-side=>'left');
                $net_control_frame_2->Radiobutton(-font => 'tab_rus', -text => 'Timed Savings Grid', -value => '3', -variable => \$net_control_alg,  
                        -command => sub {&write_map('363','3')})->pack(-side=>'left');
	} else {
		$net_control_frame->Label(-font => 'tab_rus_bold', -text => 'Управление Сетью:')->pack(-side=>'left'); #0x16b 
		$net_control_frame_1 = $tab3->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'35', -after=>$net_control_frame);
		$net_control_frame_1->Radiobutton(-font => 'tab_rus', -text => 'Трансляция + Заряд', -value => '0', -variable => \$net_control_alg,  
			-command => sub {&write_map('363','0')})->pack(-side=>'left');
		$net_control_frame_1->Radiobutton(-font => 'tab_rus', -text => 'Только Трансляция', -value => '1', -variable => \$net_control_alg,  
			-command => sub {&write_map('363','1')})->pack(-side=>'left');
		$net_control_frame_2 = $tab3->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'35', -after=>$net_control_frame_1);
		$net_control_frame_2->Radiobutton(-font => 'tab_rus', -text => 'Принудительная Генерация', -value => '2', -variable => \$net_control_alg,  
			-command => sub {&write_map('363','2')})->pack(-side=>'left');
		$net_control_frame_2->Radiobutton(-font => 'tab_rus', -text => 'Тарифная Сеть', -value => '3', -variable => \$net_control_alg,  
			-command => sub {&write_map('363','3')})->pack(-side=>'left');
	}

	my $net_level_upper_frame = $tab3->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'15', -after=>$net_control_frame_2);
	if ($lang eq 'en_US.UTF-8'){
		$net_level_upper_frame->Label( -font => 'tab_rus_bold', -text=>'Upper Grid Voltage Limit (' )->pack(-side=>'left'); #0x169
                $net_level_upper_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$map_net_level_upper )->pack(-side => 'left'); #0x169 = 361
                $net_level_upper_frame->Label(-font => 'tab_rus_bold', -text=>'V): ')->pack(-side => 'left');
                $net_level_upper_frame->Optionmenu( -options => [@voltage_upper_level], -variable => \$map_net_level_upper, -font => 'tab_rus',
                        -command => [sub {&write_voltage('361', $map_net_level_upper)}])->pack(-side=>'left');
                $net_level_upper_frame->Label(-font => 'tab_rus_bold', -text=>' Vac')->pack(-side => 'left');
	} else {
		$net_level_upper_frame->Label( -font => 'tab_rus_bold', -text=>'Верхний Порог Сети (' )->pack(-side=>'left'); #0x169
		$net_level_upper_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$map_net_level_upper )->pack(-side => 'left'); #0x169 = 361
		$net_level_upper_frame->Label(-font => 'tab_rus_bold', -text=>'В): ')->pack(-side => 'left');
		$net_level_upper_frame->Optionmenu( -options => [@voltage_upper_level], -variable => \$map_net_level_upper, -font => 'tab_rus',
                	-command => [sub {&write_voltage('361', $map_net_level_upper)}])->pack(-side=>'left');
		$net_level_upper_frame->Label(-font => 'tab_rus_bold', -text=>' В')->pack(-side => 'left');
	}
	
	my $net_level_lower_frame = $tab3->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'15', -after=>$net_level_upper_frame);
	if ($lang eq 'en_US.UTF-8'){
		$net_level_lower_frame->Label( -font => 'tab_rus_bold', -text=>'Lower Grid Voltage Level (' )->pack(-side=>'left');
                $net_level_lower_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$map_net_level_lower )->pack(-side => 'left'); #0x16a = 362
                $net_level_lower_frame->Label(-font => 'tab_rus_bold', -text=>'V): ')->pack(-side => 'left');
                $net_level_lower_frame->Optionmenu( -options => [@voltage_low_level], -variable => \$map_net_level_lower, -font => 'tab_rus',
                        -command => [sub {&write_voltage('362', $map_net_level_lower)}])->pack(-side=>'left');
                $net_level_lower_frame->Label(-font => 'tab_rus_bold', -text=>' Vac')->pack(-side => 'left');
	} else {
		$net_level_lower_frame->Label( -font => 'tab_rus_bold', -text=>'Нижний Порог Сети (' )->pack(-side=>'left');
		$net_level_lower_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$map_net_level_lower )->pack(-side => 'left'); #0x16a = 362
		$net_level_lower_frame->Label(-font => 'tab_rus_bold', -text=>'В): ')->pack(-side => 'left');
		$net_level_lower_frame->Optionmenu( -options => [@voltage_low_level], -variable => \$map_net_level_lower, -font => 'tab_rus',
			-command => [sub {&write_voltage('362', $map_net_level_lower)}])->pack(-side=>'left');
		$net_level_lower_frame->Label(-font => 'tab_rus_bold', -text=>' В')->pack(-side => 'left');	
	}

	#$tab3->Button( -text=>'Выход', -command=>[$tbd => 'destroy'] )->pack(-side=>'top', -anchor=>'center', -pady=>'15');


	##1b6 define EE_LCD_TimeCyr        0  //Текущее время, например, 23:50 хранится как  - 23- в старших 5 битах, 5- в младших 3 битах
	#                              //т.к. здесь только десятки мин, то дополнительно хранятся минуты в TimeCyr_MINUT 0x1b6 = 438
	my $map_time_frame = $tab4->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'15'); #$tab4
	$map_time_frame->Label(-font => 'tab_rus_bold', -textvariable => \$real_time_label)->pack(-side=>'left');
	$time_hours_map='-';
	$time_minutes_map='-';
	$map_time_frame->Optionmenu( -options => \@hour_labels, -variable => \$time_hours_map, -font => 'tab_rus',
		-command => [sub {&write_time('438', $time_hours_map, $time_minutes_map)}])->
		pack(-side=>'left');
	$map_time_frame->Label(-font => 'tab_rus_bold', -text => ' : ')->pack(-side=>'left');
	$map_time_frame->Optionmenu( -options => \@minute_labels, -variable => \$time_minutes_map, -font => 'tab_rus',
		-command => [sub {&write_time('438', $time_hours_map, $time_minutes_map)}])->
		pack(-side=>'left');
	#$map_time_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$times)->pack(-side=>'left');
	my $map_time_frame_extra = $tab4->Frame()->pack(-side=>'top', -anchor=>'nw', -padx=>'15', -after=>$map_time_frame);
	if ($lang eq 'en_US.UTF-8'){
		$map_time_frame_extra->Label(-font => 'tab_rus', -text => '[internal clock settings will be lost on MAC shutdown]')->pack(-side=>'left');
	} else {
		$map_time_frame_extra->Label(-font => 'tab_rus', -text => '[настройки МАП-времени сбрасываются при отключении МАП]')->pack(-side=>'left');
	}
	my $map_version_frame = $tab4->Frame()->pack(-side=>'top', -anchor=>'nw', -after=>$map_time_frame_extra, -padx=>'15');	
	if ($lang eq 'en_US.UTF-8'){
		$map_version_frame->Label( -font => 'tab_rus_bold', -text=>'Version: ' )->pack(-side=>'left');
	} else {
		$map_version_frame->Label( -font => 'tab_rus_bold', -text=>'Версия: ' )->pack(-side=>'left');
	}
	$map_version_frame->Label(-font => 'tab_rus_bold', -textvariable => \$map_versions)->pack(-side=>'left');

	my $map_max_charge_time_frame=$tab4->Frame()->pack(-side=>'top', -anchor=>'nw', -after=>$map_version_frame, -padx=>'15'); #top of tab 3!
	if ($lang eq 'en_US.UTF-8'){
		$map_max_charge_time_frame->Label(-font => 'tab_rus_bold', -text=>'Max Charge Time (' )->pack(-side => 'left');
                $map_max_charge_time_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$map_max_charge_time )->pack(-side => 'left'); #0x168 = 360 
                $map_max_charge_time_frame->Label(-font => 'tab_rus_bold', -text=>'hours)' )->pack(-side => 'left');
                $map_max_charge_time_frame->Spinbox(-font => 'tab_rus',-from=>2, -to=>48, -increment=>2, -width=>3, -textvariable=>\$map_max_charge_time,
                        -command => [sub {&write_charge_time('439', $map_max_charge_time)}])->pack(-side=>'left');
	} else {
        	$map_max_charge_time_frame->Label(-font => 'tab_rus_bold', -text=>'Max Время Заряда (' )->pack(-side => 'left');
        	$map_max_charge_time_frame->Label(-font => 'tab_rus_bold', -textvariable=>\$map_max_charge_time )->pack(-side => 'left'); #0x168 = 360 
        	$map_max_charge_time_frame->Label(-font => 'tab_rus_bold', -text=>'час.)' )->pack(-side => 'left');
        	$map_max_charge_time_frame->Spinbox(-font => 'tab_rus',-from=>2, -to=>48, -increment=>2, -width=>3, -textvariable=>\$map_max_charge_time,
                	-command => [sub {&write_charge_time('439', $map_max_charge_time)}])->pack(-side=>'left');
	}
	my $conn_speed_frame = $tab4->Frame()->pack(-side=>'top', -anchor=>'nw', -after=>$map_max_charge_time_frame, -padx=>'15');#(-side=>'top'); #tab4
	if ($lang eq 'en_US.UTF-8'){
		$conn_speed_frame->Label(-font => 'tab_rus_bold', -text => 'Connection speed RS/SAS/PC:')
                ->pack(-side=>'left');
	} else {
		$conn_speed_frame->Label(-font => 'tab_rus_bold', -text => 'Скорость RS/САП:')
		->pack(-side=>'left');#(-side=>'top'); #2  //01b5= 437 - 2400, 1- 9600, 2 - 19200, 3 - САП-Заряд
	}
	$conn_speed_frame->Radiobutton(-font => 'tab_rus', -text => '2400 B/s', -value => '0', -variable => \$conn_speed,  -command => sub {&write_map('437','0')})
        ->pack(-side=>'left'); #(-side => 'right');
	$conn_speed_frame->Radiobutton(-font => 'tab_rus', -text => '9600 B/s', -value => '1', -variable => \$conn_speed,  -command => sub {&write_map('437','1')})
        ->pack(-side=>'left');#(-side => 'right');
	$conn_speed_frame->Radiobutton(-font => 'tab_rus', -text => '19200 B/s', -value => '2', -variable => \$conn_speed,  -command => sub {&write_map('437','2')})
        ->pack(-side=>'left'); #(-side => 'right');
	

	my $sound_frame = $tab4->Frame()->pack(-side=>'top', -anchor=>'nw', -after=>$conn_speed_frame, -padx=>'15'); #(-side=>'top'); #tab4
	if ($lang eq 'en_US.UTF-8'){
		$sound_frame->Label(-font => 'tab_rus_bold', -text => 'Sounds: ')
                ->pack(-side=>'left'); #(-side=>'top'); #0x1b3=435 0- Разрешенные (без 8), 1 - ТолькоПроблемы (без переходов и без 8), 2- Никаких
                $sound_frame->Radiobutton(-font => 'tab_rus', -text => 'Permitted', -value => '0', -variable => \$sound_control,  
                -command => sub {&write_map('435','0')})->pack(-side=>'left'); #(-side => 'right');
                $sound_frame->Radiobutton(-font => 'tab_rus', -text => 'Problem indication', -value => '1', -variable => \$sound_control,  
                -command => sub {&write_map('435','1')})->pack(-side=>'left'); #(-side => 'right');
                $sound_frame->Radiobutton(-font => 'tab_rus', -text => 'None (no sounds)', -value => '2', -variable => \$sound_control,  
                -command => sub {&write_map('435','2')}) ->pack(-side=>'left'); #(-side => 'right');
	} else {
		$sound_frame->Label(-font => 'tab_rus_bold', -text => 'Звуки: ')
                ->pack(-side=>'left'); #(-side=>'top'); #0x1b3=435 0- Разрешенные (без 8), 1 - ТолькоПроблемы (без переходов и без 8), 2- Никаких
		$sound_frame->Radiobutton(-font => 'tab_rus', -text => 'Разрешенные', -value => '0', -variable => \$sound_control,  
		-command => sub {&write_map('435','0')})->pack(-side=>'left'); #(-side => 'right');
		$sound_frame->Radiobutton(-font => 'tab_rus', -text => 'Только Проблемы', -value => '1', -variable => \$sound_control,  
		-command => sub {&write_map('435','1')})->pack(-side=>'left'); #(-side => 'right');
		$sound_frame->Radiobutton(-font => 'tab_rus', -text => 'Никаких', -value => '2', -variable => \$sound_control,  
		-command => sub {&write_map('435','2')}) ->pack(-side=>'left'); #(-side => 'right');
	}
	my $lcd_backlight_frame = $tab4->Frame()->pack(-side=>'top', -anchor=>'nw', -after=>$sound_frame, -padx=>'15');#(-side=>'top'); #tab4
	if ($lang eq 'en_US.UTF-8'){
		$lcd_backlight_frame->Label(-font => 'tab_rus_bold', -text => 'LCD Backlight:')
                ->pack(-side=>'left'); #(-side=>'top'); #0x1b2=434 define EE_LCD_LCDType        1  //0 - выключен, 1 - горит по ситуации ,2 - всегда горит
                $lcd_backlight_frame->Radiobutton(-font => 'tab_rus', -text => 'Off', -value => '0', -variable => \$lcd_backlight,  
                -command => sub {&write_map('434','0')})->pack(-side=>'left'); #(-side => 'right');
                $lcd_backlight_frame->Radiobutton(-font => 'tab_rus', -text => 'Automatic', -value => '1', -variable => \$lcd_backlight,  
                -command => sub {&write_map('434','1')})->pack(-side=>'left'); #(-side => 'right');
                $lcd_backlight_frame->Radiobutton(-font => 'tab_rus', -text => 'Always On', -value => '2', -variable => \$lcd_backlight,  
                -command => sub {&write_map('434','2')})->pack(-side=>'left'); #(-side => 'right');	
	} else {
		$lcd_backlight_frame->Label(-font => 'tab_rus_bold', -text => 'Подсветка ЖКИ:')
                ->pack(-side=>'left'); #(-side=>'top'); #0x1b2=434 define EE_LCD_LCDType        1  //0 - выключен, 1 - горит по ситуации ,2 - всегда горит
		$lcd_backlight_frame->Radiobutton(-font => 'tab_rus', -text => 'Выключена', -value => '0', -variable => \$lcd_backlight,  
		-command => sub {&write_map('434','0')})->pack(-side=>'left'); #(-side => 'right');
		$lcd_backlight_frame->Radiobutton(-font => 'tab_rus', -text => 'Горит по Ситуации', -value => '1', -variable => \$lcd_backlight,  
		-command => sub {&write_map('434','1')})->pack(-side=>'left'); #(-side => 'right');
		$lcd_backlight_frame->Radiobutton(-font => 'tab_rus', -text => 'Всегда Горит', -value => '2', -variable => \$lcd_backlight,  
		-command => sub {&write_map('434','2')})->pack(-side=>'left'); #(-side => 'right');
	}
	my $acc_consrv_frame = $tab4->Frame()->pack(-side=>'top', -anchor=>'nw', -after=>$lcd_backlight_frame, -padx=>'15'); #(-side=>'top'); #tab4
	if ($lang eq 'en_US.UTF-8'){
		$acc_consrv_frame->Label(-font => 'tab_rus_bold', -text => 'Battery Conservation Mode:')
                ->pack(-side=>'left'); #(-side=>'top'); #0x1b1=433 define EE_LCD_SaveCharge     0  //Режим консервации в режиме выключенно, будет осуществлять заряд при 1
                $acc_consrv_frame->Radiobutton(-font => 'tab_rus', -text => 'Off', -value => '0', -variable => \$acc_consrv,  
                -command => sub {&write_map('433','0')})->pack(-side=>'left'); #(-side => 'right');
                $acc_consrv_frame->Radiobutton(-font => 'tab_rus', -text => 'On', -value => '1', -variable => \$acc_consrv,  
                -command => sub {&write_map('433','1')})->pack(-side=>'left'); #(-side => 'right');
	} else {
		$acc_consrv_frame->Label(-font => 'tab_rus_bold', -text => 'Консервация АКБ:')
                ->pack(-side=>'left'); #(-side=>'top'); #0x1b1=433 define EE_LCD_SaveCharge     0  //Режим консервации в режиме выключенно, будет осуществлять заряд при 1
		$acc_consrv_frame->Radiobutton(-font => 'tab_rus', -text => 'ВЫключена', -value => '0', -variable => \$acc_consrv,  
		-command => sub {&write_map('433','0')})->pack(-side=>'left'); #(-side => 'right');
		$acc_consrv_frame->Radiobutton(-font => 'tab_rus', -text => 'Включена', -value => '1', -variable => \$acc_consrv,  
		-command => sub {&write_map('433','1')})->pack(-side=>'left'); #(-side => 'right');
	}
	my $database_path_frame = $tab4->Frame()->pack(-side=>'top', -anchor=>'nw', -after=>$acc_consrv_frame, -padx=>'15'); #(-side=>'top'); #tab4
	$database_path_frame->Label(-font => 'tab_rus_small', -textvariable=>\$homedirtext )->pack(-side => 'left');

	if ($databasepath){
		if ($lang eq 'en_US.UTF-8'){
			$tab4->Button( -text=>'Delete Database', -command=>[sub{unlink($databasepath); &homedir;}] )->
                        pack(-side=>'top', -anchor=>'center', -after=>$database_path_frame, -pady=>'15');
                        $tab4->Button( -text=>'Open Folder w/Database', -command=>[sub{&browsedir($databasedir);}] )->
                        pack(-side=>'top', -anchor=>'center', -pady=>'15');
		} else {
			$tab4->Button( -text=>'Обнулить Базу', -command=>[sub{unlink($databasepath); &homedir;}] )->
			pack(-side=>'top', -anchor=>'center', -after=>$database_path_frame, -pady=>'15');
			$tab4->Button( -text=>'Открыть Папку с Базой', -command=>[sub{&browsedir($databasedir);}] )->
			pack(-side=>'top', -anchor=>'center', -pady=>'15');
		}
	}	


	if ($lang eq 'en_US.UTF-8'){
		$tab5->Label( -font => 'tab_rus_bold', -text=>'Help:' )->pack();
	} else {
		$tab5->Label( -font => 'tab_rus_bold', -text=>'Помощь:' )->pack();
	}
	my $t = $tab5->Scrolled("Text",-border=>1, -width => 85, -height=>'17', -scrollbars=> 'osoe', -background=>'lightgray')->pack(); #,-wrap=>'word',-setgrid => 'true',)->grid; 
	$t->tagConfigure('goto_url', -underline => 0, -foreground => 'black', -font => 'tab_rus');
	$t->tagConfigure('goto_url1', -underline => 1, -foreground => 'red', -font => 'tab_rus_bold');
	$t->tagConfigure('goto_url2', -underline => 0, -foreground => 'red', -font => 'tab_rus_bold');
	$t->tagConfigure('goto_url3', -underline => 1, -foreground => 'red', -font => 'tab_rus_bold');
	$t->tagConfigure('goto_url4', -underline => 0, -foreground => 'red', -font => 'tab_rus_bold');
	$t->tagConfigure('goto_url5', -underline => 1, -foreground => 'red', -font => 'tab_rus_bold');
	$t->tagConfigure('goto_url6', -underline => 0, -foreground => 'red', -font => 'tab_rus_bold');
	$t->tagConfigure('goto_url7', -underline => 1, -foreground => 'red', -font => 'tab_rus_bold');
	$t->tagConfigure('goto_url8', -underline => 0, -foreground => 'red', -font => 'tab_rus_bold');
	$t->tagConfigure('goto_url9', -underline => 0, -foreground => 'red', -font => 'tab_rus_bold');	
	$t->tagConfigure('goto_url10', -underline => 0, -foreground => 'red', -font => 'tab_rus_bold');

	if ($os =~ /Win/i){
        	eval "use Win32::FileOp qw(ShellExecute); 1" or die $@;
        	eval {
			$t->tagBind('goto_url', "<Any-Enter>", sub {$t->tagConfigure('goto_url', -relief=>'raised', -foreground => 'blue'); });
                	$t->tagBind('goto_url', "<Any-Leave>", sub {$t->tagConfigure('goto_url', -relief=>'flat', -foreground => 'black'); });
                	$t->tagBind('goto_url', "<Button-1>", sub { system("start /b http://invertor.ru")});
			$t->tagBind('goto_url1', "<Any-Enter>", sub {$t->tagConfigure('goto_url1', -relief=>'raised', -foreground => 'blue'); });
			$t->tagBind('goto_url1', "<Any-Leave>", sub {$t->tagConfigure('goto_url1', -relief=>'flat', -foreground => 'red'); });
			$t->tagBind('goto_uгl1', "<Button-1>", sub { system("start /b http://invertor.ru")});
			$t->tagBind('goto_url2', "<Any-Enter>", sub {$t->tagConfigure('goto_url2', -relief=>'raised', -foreground => 'blue'); });
			$t->tagBind('goto_url2', "<Any-Leave>", sub {$t->tagConfigure('goto_url2', -relief=>'flat', -foreground => 'red'); });
			$t->tagBind('goto_url2', "<Button-1>", sub { system("start /b http://invertor.pro")});
                	$t->tagBind('goto_url3', "<Any-Enter>", sub {$t->tagConfigure('goto_url3', -relief=>'raised', -foreground => 'blue'); });
			$t->tagBind('goto_url3', "<Any-Leave>", sub {$t->tagConfigure('goto_url3', -relief=>'flat', -foreground => 'red'); });
			$t->tagBind('goto_url3', "<Button-1>", sub { system("start /b http://инвертор.рф")});
			$t->tagBind('goto_url4', "<Any-Enter>", sub {$t->tagConfigure('goto_url4', -relief=>'raised', -foreground => 'blue'); });
			$t->tagBind('goto_url4', "<Any-Leave>", sub {$t->tagConfigure('goto_url4', -relief=>'flat', -foreground => 'red'); });
			$t->tagBind('goto_url4', "<Button-1>", sub { system("start /b http://vetrogenerator.ru")});
			$t->tagBind('goto_url5', "<Any-Enter>", sub {$t->tagConfigure('goto_url5', -relief=>'raised', -foreground => 'blue'); });
			$t->tagBind('goto_url5', "<Any-Leave>", sub {$t->tagConfigure('goto_url5', -relief=>'flat', -foreground => 'red'); });
			$t->tagBind('goto_url5', "<Button-1>", sub { system("start /b http://ветрогенератор.рф")});
			$t->tagBind('goto_url6', "<Any-Enter>", sub {$t->tagConfigure('goto_url6', -relief=>'raised', -foreground => 'blue'); });
			$t->tagBind('goto_url6', "<Any-Leave>", sub {$t->tagConfigure('goto_url6', -relief=>'flat', -foreground => 'red'); });
			$t->tagBind('goto_url6', "<Button-1>", sub { system("start /b http://stabilizator.ru")});
                        $t->tagBind('goto_url7', "<Any-Enter>", sub {$t->tagConfigure('goto_url7', -relief=>'raised', -foreground => 'blue'); });
			$t->tagBind('goto_url7', "<Any-Leave>", sub {$t->tagConfigure('goto_url7', -relief=>'flat', -foreground => 'red'); });
			$t->tagBind('goto_url7', "<Button-1>", sub { system("start /b http://microart.ru")});
                        $t->tagBind('goto_url8', "<Any-Enter>", sub {$t->tagConfigure('goto_url8', -relief=>'raised', -foreground => 'blue'); });
			$t->tagBind('goto_url8', "<Any-Leave>", sub {$t->tagConfigure('goto_url8', -relief=>'flat', -foreground => 'red'); });
			$t->tagBind('goto_url8', "<Button-1>", sub { system("start /b http://микроарт.рф")});
			$t->tagBind('goto_url9', "<Any-Enter>", sub {$t->tagConfigure('goto_url9', -relief=>'raised', -foreground => 'blue'); });
			$t->tagBind('goto_url9', "<Any-Leave>", sub {$t->tagConfigure('goto_url9', -relief=>'flat', -foreground => 'red'); });
			$t->tagBind('goto_url9', "<Button-1>", sub { system("start /b mailto:sale\@microart.ru")});

			$t->tagBind('goto_url10', "<Any-Enter>", sub {$t->tagConfigure('goto_url10', -relief=>'raised', -foreground => 'blue'); });
                        $t->tagBind('goto_url10', "<Any-Leave>", sub {$t->tagConfigure('goto_url10', -relief=>'flat', -foreground => 'red'); });
                        $t->tagBind('goto_url10', "<Button-1>", sub { system("start /b http://macenergia.com")});

        	};
	} else {
       		$t->tagBind('goto_url', "<Any-Enter>", sub {$t->tagConfigure('goto_url', -relief=>'raised', -foreground => 'blue'); });
		$t->tagBind('goto_url', "<Any-Leave>", sub {$t->tagConfigure('goto_url', -relief=>'flat', -foreground => 'black'); });
	 	$t->tagBind('goto_url', "<Button-1>", sub {system("firefox http://invertor.ru") });

		$t->tagBind('goto_url1', "<Any-Enter>", sub {$t->tagConfigure('goto_url1', -relief=>'raised', -foreground => 'blue'); });
                $t->tagBind('goto_url1', "<Any-Leave>", sub {$t->tagConfigure('goto_url1', -relief=>'flat', -foreground => 'red'); });
        	$t->tagBind('goto_url1', "<Button-1>", sub {system("firefox http://invertor.ru") });
		$t->tagBind('goto_url2', "<Any-Enter>", sub {$t->tagConfigure('goto_url2', -relief=>'raised', -foreground => 'blue'); });
                $t->tagBind('goto_url2', "<Any-Leave>", sub {$t->tagConfigure('goto_url2', -relief=>'flat', -foreground => 'red'); });
        	$t->tagBind('goto_url2', "<Button-1>", sub {system("firefox http://invertor.pro") });

		$t->tagBind('goto_url3', "<Any-Enter>", sub {$t->tagConfigure('goto_url3', -relief=>'raised', -foreground => 'blue'); });
                $t->tagBind('goto_url3', "<Any-Leave>", sub {$t->tagConfigure('goto_url3', -relief=>'flat', -foreground => 'red'); });
        	$t->tagBind('goto_url3', "<Button-1>", sub {system("firefox http://инвертор.рф") });

		$t->tagBind('goto_url4', "<Any-Enter>", sub {$t->tagConfigure('goto_url4', -relief=>'raised', -foreground => 'blue'); });
                $t->tagBind('goto_url4', "<Any-Leave>", sub {$t->tagConfigure('goto_url4', -relief=>'flat', -foreground => 'red'); });
		$t->tagBind('goto_url4', "<Button-1>", sub {system("firefox http://vetrogenerator.ru") });

		$t->tagBind('goto_url5', "<Any-Enter>", sub {$t->tagConfigure('goto_url5', -relief=>'raised', -foreground => 'blue'); });
                $t->tagBind('goto_url5', "<Any-Leave>", sub {$t->tagConfigure('goto_url5', -relief=>'flat', -foreground => 'red'); });
		$t->tagBind('goto_url5', "<Button-1>", sub {system("firefox http://ветрогенератор.рф") });

		$t->tagBind('goto_url6', "<Any-Enter>", sub {$t->tagConfigure('goto_url6', -relief=>'raised', -foreground => 'blue'); });
                $t->tagBind('goto_url6', "<Any-Leave>", sub {$t->tagConfigure('goto_url6', -relief=>'flat', -foreground => 'red'); });
		$t->tagBind('goto_url6', "<Button-1>", sub {system("firefox http://stabilizator.ru") });

		$t->tagBind('goto_url7', "<Any-Enter>", sub {$t->tagConfigure('goto_url7', -relief=>'raised', -foreground => 'blue'); });
                $t->tagBind('goto_url7', "<Any-Leave>", sub {$t->tagConfigure('goto_url7', -relief=>'flat', -foreground => 'red'); });
                $t->tagBind('goto_url7', "<Button-1>", sub {system("firefox http://microart.ru") });

		$t->tagBind('goto_url8', "<Any-Enter>", sub {$t->tagConfigure('goto_url8', -relief=>'raised', -foreground => 'blue'); });
                $t->tagBind('goto_url8', "<Any-Leave>", sub {$t->tagConfigure('goto_url8', -relief=>'flat', -foreground => 'red'); });
                $t->tagBind('goto_url8', "<Button-1>", sub {system("firefox http://микроарт.рф") });

		$t->tagBind('goto_url9', "<Any-Enter>", sub {$t->tagConfigure('goto_url9', -relief=>'raised', -foreground => 'blue'); });
                $t->tagBind('goto_url9', "<Any-Leave>", sub {$t->tagConfigure('goto_url9', -relief=>'flat', -foreground => 'red'); });
		$t->tagBind('goto_url9', "<Button-1>", sub {system("firefox mailto:sale\@microart.ru") });
	
		$t->tagBind('goto_url10', "<Any-Enter>", sub {$t->tagConfigure('goto_url10', -relief=>'raised', -foreground => 'blue'); });
                $t->tagBind('goto_url10', "<Any-Leave>", sub {$t->tagConfigure('goto_url10', -relief=>'flat', -foreground => 'red'); });
                $t->tagBind('goto_url10', "<Button-1>", sub {system("firefox http://macenergia.com") });
	}
	if ($lang eq 'en_US.UTF-8'){
		$t->insert('end', "Support, downloads, firmware, latest equipment:\n", "goto_url");
		$t->insert('end', "www.macenergia.com\n", "goto_url10");
                $t->configure(-cursor =>'hand2');
	} else {
		$t->insert('end', "Поддержка, обновления, новое оборудование:\n", "goto_url");
		$t->insert('end', "www.invertor.ru\n", "goto_url1");
		$t->insert('end', "invertor.pro\n", "goto_url2");
		$t->insert('end', "инвертор.рф\n", "goto_url3");
		$t->insert('end', "vetrogenerator.ru\n", "goto_url4");	
		$t->insert('end', "ветрогенератор.рф\n", "goto_url5");
		$t->insert('end', "stabilizator.ru\n", "goto_url6");
		$t->insert('end', "microart.ru\n", "goto_url7");
		$t->insert('end', "микроарт.рф\n", "goto_url8");
		$t->insert('end', 'Электронная почта: sale@microart.ru', "goto_url9");
		$t->configure(-cursor =>'hand2');
	}
	#$t->bind( '<Enter>', sub {$t->configure(-font => 'tab_rus_tiny'); });
	if ($lang eq 'en_US.UTF-8'){
		$tab5->Label( -font => 'tab_rus_tiny', -text=>'GNU/Artistic Licence "open source" by @pashanoid' )->pack();
                $tab5->Label( -font => 'tab_rus_tiny', -text=>'source code at http://pashanoid.ru/code/dial.pl (Perl/Tk)' )->pack();
                $tab5->Label( -font => 'tab_rus_tiny', -text=>'Usable under most known OS\'s' )->pack();
                $tab5->Label( -font => 'tab_rus_tiny', -text=>'MS Windows, all flavors of Linux, BSD & Mac' )->pack();
                $book->pageconfigure( "Sheet 5", -state=>'normal' );
                $tab5->Button( -text=>'Exit', -command=>[$tbd => 'destroy'] , -font=>'tab_rus_bold')->pack();
	} else {
		$tab5->Label( -font => 'tab_rus_tiny', -text=>'Лицензия GNU/Artistic Licence "открытый код" автор @pashanoid' )->pack();
		$tab5->Label( -font => 'tab_rus_tiny', -text=>'Исходный код на http://pashanoid.ru/code/dial.pl (Perl/Tk)' )->pack();
		$tab5->Label( -font => 'tab_rus_tiny', -text=>'Устанавливается под большинство используемых ОС' )->pack();
		$tab5->Label( -font => 'tab_rus_tiny', -text=>'Все семейства Windows, Linux, BSD и Mac' )->pack();
		$book->pageconfigure( "Sheet 5", -state=>'normal' );
		$tab5->Button( -text=>'Выход', -command=>[$tbd => 'destroy'] , -font=>'tab_rus_bold')->pack();
	}
}

sub chart{
	my $chart_period = shift;
	#print "chart type=$chart_type\n";
	$minid = 1; #initial minid!
	$maxid = "";
	return if ($chart_period == 1); 		#do nothing
	return if Exists($mwc); 			#only one chart allowed
	my ($chart_period_back);
	my ($d, $e) = (0.00001, 1);			#show 100% of $chart_period_type
	($chart_period_back) = &update_data($chart_period, $d, $e);
	drawcharts($chart_period);
	return;
}

sub drawcharts {
	my $chart_period = shift;
	my ($x_begin, $y_begin);
        
	$font_counter_ch++;
        $mwc = $mw -> Toplevel();
	$mwc->Icon(-image => $ico);
        #$mwc->geometry( "750x970" );
        $mwc->geometry( "750x800");
        $mwc->optionAdd("*font", "*utf-8");
	if ($lang eq 'en_US.UTF-8'){
		$mwc->title('MAC Voltage: V in, V out');
	} else {
	        $mwc->title('Входное и Выходное напряжение МАП: U in, U out');
        }
	$mwc->optionAdd("*font", "*utf-8");
        $mwc->fontCreate('giant_rus', -family => 'nimbus sans l', -weight => 'normal', -size=>int(-13*13/10)) unless ($font_counter_ch >1);
        $mwc->fontCreate('tiny_rus', -family => 'nimbus sans l', -weight => 'normal', -size=>int(-12*12/10)) unless ($font_counter_ch >1);
	if ($lang eq 'en_US.UTF-8'){
		$chart_exit = $mwc->Button( -text=>'Exit', -command=>[ $mwc => 'destroy'] )->pack(-padx=>15, -pady=>15, -anchor=>'nw', -side=>'bottom');
	} else {
		$chart_exit = $mwc->Button( -text=>'Закрыть', -command=>[ $mwc => 'destroy'] )->pack(-padx=>15, -pady=>15, -anchor=>'nw', -side=>'bottom');
	}
	#$lcd_backlight_frame->Label(-font => 'tab_rus_bold', -text => 'Подсветка ЖКИ:')->pack(-side=>'left');
	#$database_path_text = $mwc->Label(-font => 'tab_rus', -textvariable=>\$homedirtext )->pack(-padx=>25, -pady=>15, -anchor=>'nw', -side => 'bottom', -after=>$chart_exit);
	&set_charts;

        $chart->plot(\@data);
        $chart2->plot(\@data2);
	$chart3->plot(\@data3);
        $chart_exit->raise($chart3);
	#$database_path_text->raise($chart3);
	
        $mwc->bind('<ButtonPress>' => sub { 
        	$mwc->configure(-cursor => 'crosshair');
                $x_begin = $Tk::event->x;
                $y_begin = $Tk::event->y; #needed for charting the rectangle
                $mwc->bind('<Motion>' => sub { 
				$mwc->configure(-cursor => 'bottom_right_corner');
        			my $x_now = $Tk::event->x;
        			my $y_now = $Tk::event->y;
        			$chart->createRectangle($x_begin, $y_begin, $x_now, $y_now, -width => 1, -outline => 'yellow', -tag=>'yellow');
        			$chart2->createRectangle($x_begin, $y_begin, $x_now, $y_now, -width => 1, -outline => 'orange', -tag=>'orange');
				$chart3->createRectangle($x_begin, $y_begin, $x_now, $y_now, -width => 1, -outline => 'green', -tag=>'green');
			 });
        	});
        my $x_now;
	$mwc->bind('<ButtonRelease>' => sub {
			my $x_now = $Tk::event->x;
                        $mwc->bind('<Motion>', "");
                        my $chart_width = ($chart->width); #100 pixels for margins at beginning/end of chart
                        $chart->delete('yellow');
                        $chart2->delete('orange');
			$chart3->delete('red');
                        my $del = $chart_width-100;
                        $del = 0.00001 if ($del <= 0);
                        my $d = ($x_begin-100)/$del;
                        $d = 0.00001 if ($d < 0);
                        $d = 100 if ($d > 100);
                        $x_now = 0 unless ($x_now);
                        my $e = ($x_now-100)/$del;
                        $e = 0.00001 if ($e < 0);
                        $e = 100 if ($e > 100);
                        $chart->clearchart;
                        $chart2->clearchart;
			$chart3->clearchart;
                        $chart->destroy;
                        $chart2->destroy;
			$chart3->destroy;
                        $mwc->destroy;
                        &update_data($chart_period, $d, $e);
                        &drawcharts($chart_period);
		} );
}



if ($disconnected){
	&disconnect;
	exit;
} 
#else {	&connect;}
#$mw -> repeat(7500, sub{&readings});
$mw -> repeat(7000, sub{readings()});

MainLoop;

sub browsedir {
	my $databasedir = shift;
	if ($^O eq 'MSWin32') {
		eval "use Win32::FileOp qw(ShellExecute); 1" or die $@;
                eval { system("start explorer /e,\"$databasedir\""); };
                #eval { system("Explorer");};
    		#exec "start $databasedir";
  	} else {
    		system ("nautilus $databasedir");
	}
}



sub homedir {

        my $homedir = File::HomeDir-> my_dist_data('mapenergy');
        File::HomeDir->my_dist_data('mapenergy', { create => 1 }) unless ($homedir); #print "created $homedir\n";
        $homedir = File::HomeDir-> my_dist_data('mapenergy'); #print "read homedir = $homedir\n";
        my $configuration_file = $homedir.'/map.cfg';
        my $cfg = new Config::Simple($configuration_file); #read the config file
        unless ($cfg){
                $cfg= new Config::Simple(syntax=>'ini');
                $cfg->param("sqlite.dsn", "---");
                $cfg->param("corporate", "microart");
                $cfg->param("author", '@pashanoid');
                $cfg->param("site.title", 'MAC ENERGY SINE Monitoring and Configuration');
		$cfg->param("lang",'ru_RU.UTF-8');
		if ($qty){
			$cfg->param("qty", $qty);
		} else {
			$cfg->param("qty", '1');
		}
                $cfg->write($configuration_file);
        }
        $cfg->import_names(); #print Dumper($cfg);
	#my $lc = File::HomeDir->my_dist_data( 'lc' );
	$lang = $cfg->param('lang');
	$qty = $cfg->param('qty');
	#print "lang=$lang\n";
	

	my $dbfile = $homedir.'/sqlite.db';
	my $filesize;
	$os = $^O;
	if ($os =~ /Win/i){
		$databasedir = $homedir;
		$databasepath = $homedir.'\sqlite.db'; 
		$filesize = format_bytes(-s $databasepath); # 4.5M
		if ($lang eq 'en_US.UTF-8'){
			$homedirtext = 'Database: '.$homedir.'\sqlite.db'. " : (Size: $filesize)";
		} else {
			$homedirtext = 'База данных: '.$homedir.'\sqlite.db'. " (Размер: $filesize)";	
		}
	} else {
		$databasedir = $homedir;
		$databasepath = $homedir.'/sqlite.db';
		$filesize = format_bytes(-s $databasepath); # 4.5M
		if ($lang eq 'en_US.UTF-8'){
			$homedirtext = 'Database: '.$dbfile. " (Size: $filesize)";
		} else {
			$homedirtext = 'База данных: '.$dbfile. " (Размер: $filesize)";
		}
	}
	my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile","","");
	my $exists;
	my $sth = $dbh->table_info(undef, '%', 'maplog' , "TABLE");
	$sth->execute();
        while (my @result = $sth->fetchrow_array()) {	
		$exists = $result[3];
	}
	$exists = "" unless ($exists);
	$sth->finish;
	unless ($exists eq 'TABLE') { #table does not exist
                $dbh->do("CREATE TABLE maplog (
                        id INTEGER PRIMARY KEY AUTOINCREMENT,
                        count INTEGER, date DATE,
                        status_map INTEGER, status_acc INTEGER,
                        v_acc INTEGER, v_in INTEGER, v_out INTEGER, 
                        power INTEGER, current_acc INTEGER, current_net INTEGER, freq INTEGER,
                        t_acc INTEGER, t_tor INTEGER, t_trans INTEGER
                        )"
                );
		$dbh->do("CREATE TABLE maperr (
			id INTEGER PRIMARY KEY AUTOINCREMENT,
			date DATE,
			errtype INTEGER,
			errnum INTEGER,
			errhuman VARCHAR(200)
			)"
		);

	}
	$dbh->disconnect;
        return ($configuration_file, $homedir, $dbfile, $lang);
}
sub set_charts{

	my $title;
	my @legends;
	if ($lang eq 'en_US.UTF-8'){
		$title = 'MAC Voltages: V in & V out';
		@legends = ( 'V in', 'V out' );
	} else {
		$title = '   U вх/вых',
		@legends = ( 'U вх', 'U вых' );
	}

	$chart = $mwc->Lines(
        	-title  => $title,
        	-titlefont => 'giant_rus',
		-titleheight => '20',
		-textfont => 'tiny_rus',
        	-xlabelfont => 'tiny_rus',
        	-ylabelfont => 'tiny_rus',
        	-boxaxis => 1,
        	-yticknumber => 5,
        	-linewidth => 2,
        	-bezier => 1,
        	-alltickview => 1,
        	-pointline => 0,
        	-markers => [10, 9, 9],
        	-xtickheight => 5,
        	-ylongticks => 1,
        	-ylongtickscolor => 'white',
        	-xlongticks => 1,
        	-xlongtickscolor => 'white',
        	-width => 800,
        	-height => 250,
        	-yminvalue => 0,
        	-ymaxvalue => 260,
        	-xlabelskip => $xlabelskip,
	)->pack(qw / -fill both -expand 1/);
	$chart->enabled_gradientcolor();
	$chart->set_gradientcolor(
        	-start_color => '#bdbebe',
        	-end_color   => '#aed5e2',
        	-type => 'linear_vertical',
	);

	@legends = ( 'U вх', 'U вых' );
  	$chart->set_legend(
    		-title		=> $title,
    		-data		=> \@legends,
    		-titlecolors	=> 'blue',
		-titlefont	=>'tiny_rus',
		-legendfont	=>'tiny_rus'
  	);
	$chart->set_balloon();
	
	if ($lang eq 'en_US.UTF-8'){
                $title = '   V batt.';
                @legends = ( 'V batt.' );
        } else {
                $title = '   U акб',
                @legends = ( 'U акб' );
        }

	$chart2 = $mwc->Lines(
        	-title  => $title,
        	-titlefont => 'giant_rus',
		-textfont => 'tiny_rus',
        	-titleheight => '5',
		-xlabelfont => 'tiny_rus',
        	-ylabelfont => 'tiny_rus',
        	-boxaxis => 1,
        	-yticknumber => 5,
        	-linewidth => 2,
        	-bezier => 1,
        	-alltickview => 1,
        	-pointline => 0,
        	-markers => [10, 9, 9],
        	-xtickheight => 5,
        	-ylongticks => 1,
        	-ylongtickscolor => 'white',
        	-xlongticks => 1,
        	-xlongtickscolor => 'white',
        	-width => 800,
        	-height => 250,
        	-yminvalue => 9*$qty,
        	-ymaxvalue =>17*$qty,
        	-xlabelskip => $xlabelskip,
	)->pack(qw / -fill both -expand 1 /);

	$chart2->enabled_gradientcolor();
	$chart2->set_gradientcolor(
        	-start_color => '#bdbebe',
        	-end_color   => '#aed5e2',
        	-type => 'linear_vertical',
	);
        #$chart2->set_legend(
        
	#        -title          => 'Графики напряжения АКБ',
        #        -data           н=> \@legends2,
        #        -titlecolors    => 'blue',
        #        -titlefont	=>'tiny_rus',
	#	-legendfont     =>'tiny_rus'
        #);
        #$chart2->set_balloon();

	my $chart3_title = '   P мощность (кВт)';
	$chart3_title = '   P power (kWt)' if ($lang eq 'en_US.UTF-8');
	my $chart3_yminvalue = $map_power*(-1);
	my $chart3_ymaxvalue = $map_power;
	if ($chart_type eq 'i'){
		$chart3_title =	'   I ток (А)';
		$chart3_title = '   I current (A)' if ($lang eq 'en_US.UTF-8');
		$chart3_yminvalue = $map_current_max*(-1);
		$chart3_ymaxvalue = $map_current_max;	
	} 

	$chart3 = $mwc->Lines(
                -title  => $chart3_title,
                -titlefont => 'giant_rus',
                -textfont => 'tiny_rus',
		-titleheight => '5',
                -xlabelfont => 'tiny_rus',
                -ylabelfont => 'tiny_rus',
                -boxaxis => 1,
                -yticknumber => 5,
                -linewidth => 2,
                -bezier => 1,
                -alltickview => 1,
                -pointline => 0,
                -markers => [10, 9, 9],
                -xtickheight => 5,
                -ylongticks => 1,
                -ylongtickscolor => 'white',
                -xlongticks => 1,
                -xlongtickscolor => 'white',
                -width => 800,
                -height => 250,
                -yminvalue => $chart3_yminvalue,
                -ymaxvalue => $chart3_ymaxvalue,
                -xlabelskip => $xlabelskip,
		-zeroaxisonly => 1,
        )->pack(qw / -fill both -expand 1 /);
        $chart3->enabled_gradientcolor();
        $chart3->set_gradientcolor(
                -start_color => '#bdbebe',
                -end_color   => '#aed5e2',
                -type => 'linear_vertical',
        );

	#print "map_power=$map_power\n";
	
	my $zoomtext = $chart->createText(5, 5, -text=> $zoomsign, -font=>'giant_rus', -anchor => 'nw', -tag => 'zoom');
	#my $zoomtext = $chart->createText(-text=> $zoomsign, -font=>'giant_rus', -tag => 'zoom')->pack(-anchor=>'nw', -side=>'bottom', -padx=>'15', -pady=>'15');
}
sub update_data{
	my ($chart_period, $d, $e) = @_;
	my $c;
	if ($e < $d){
		$c = $e;
		$e = $d;
		$d = $c;
	}
	

	my @timeline = (); my @v_in =(); my @v_out =(); my @v_acc =(); my @power = (); my @current =(); 
        my $dbfile = $homedir.'/sqlite.db';
        my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile","",""); #
        my $sth;
        my $date;
        
	unless ($maxid){ #if not max id has been set so far!
        	$sth = $dbh->prepare("SELECT max(id) from maplog;");
         	$sth->execute();
         	while (my @result = $sth->fetchrow_array()) {
         		$maxid = $result[0];
         	}
                $sth->finish;
        }
        my $maxdate; #max recorded date in database
        $sth = $dbh->prepare("SELECT max(strftime('%s',date)) FROM maplog;");
                $sth->execute();
                while (my @result = $sth->fetchrow_array()) {
                        $maxdate = $result[0];
                }
        $sth->finish;
	$maxid = 0 unless ($maxid);
	$minid = 0 unless ($minid);
        my $interval = ($maxid - $minid); #dates shown in chart line
	$maxid = int($minid+$interval*$e);
        $minid = int($minid+$interval*$d);
        if ($chart_period == 2){ #one day
                $date = $maxdate - 3600*24;
        } elsif ($chart_period == 3){ #one week
                $date = $maxdate - 3600*24*7;
        } elsif ($chart_period == 4){ #one month
                $date = $maxdate - 3600*24*7*4;
        } elsif ($chart_period == 5){
                $date = $maxdate - 3600*24*7*4*6; #six months
        } elsif ($chart_period == 6){
                $date = $maxdate; #all
        } else { #one hour ago
                $date = $maxdate - 3600;
        }
        $date = &convert_dates($date);
        my $period_phrase = "(date > \'$date\')"; #print "period_phrase=$period_phrase\n";
	my $period_begin_id = "";
        $sth = $dbh->prepare("SELECT min(id) FROM maplog WHERE $period_phrase;");
                $sth->execute();
                while (my @result = $sth->fetchrow_array()) {
                        $period_begin_id = $result[0];
                }
        $sth->finish; #print "period_begin_id = $period_begin_id\n";
        $period_begin_id = 0 unless ($period_begin_id);
	$minid = $period_begin_id if ($period_begin_id > $minid); #print "minid=$minid\n";
        my $phrase = "SELECT strftime(\'%H:%M:%SN%d\.%m\',date), v_in, v_out, v_acc, power, status_map, current_acc, current_net 
		FROM maplog WHERE ((id > \'$minid\') and (id < \'$maxid\'))";
	#my $phrase = "SELECT id, v_in, v_out, v_acc  FROM maplog WHERE ((id > \'$minid\') and (id < \'$maxid\'))";
       	#print "phrase=$phrase\n";
	$sth = $dbh->prepare($phrase);
        $sth->execute();
        my $count = 0;
	my $datetextit = "";
        while (my @result = $sth->fetchrow_array()) {
                $datetextit = $result[0];
		next unless ($datetextit);
		$datetextit =~ s/N/\n  /g;
                push (@timeline, $datetextit);
                push (@v_in, $result[1]);
                push (@v_out, $result[2]);
                push (@v_acc, $result[3]);
		if ($result[5] != 3) { #status map
			push (@power, ($result[4]*(-1))); #negative value when on acc!
			push (@current, ($result[6]*(-1))); #negative current when on acc!
		} else { #we're using the grid!
			push (@power, $result[4]);
			push (@current, $result[7]);
		} 
		$count++;
        }
        if ($count == 0){
                ($d, $e, $minid, $maxid) = (0.00001, 1, '','');
		&update_data($chart_period, $d, $e); #update self with same periods w/o zoom!
                return;
        }
        $sth->finish;
        $dbh->disconnect;
        if ($count < 10){
                for (my $i=0; $i<10; $i++){
                        if (!$timeline[$i]){ #last timeline tick
                                $timeline[$i]=$timeline[$i-1];
                                $v_in[$i]=$v_in[$i-1];
                                $v_out[$i]=$v_out[$i-1];
                                $v_acc[$i]=$v_acc[$i-1];
				$power[$i-1] = 0 unless ($power[$i-1]);
				$power[$i]=$power[$i-1];
				$current[$i]=$current[$i-1];
                        }
                }
        }



        $xlabelskip = int($count/10);
        $xlabelskip = 1 if ($xlabelskip < 1);
        if ($old_interval){
                $zoom = int(100 - 100*($interval/$old_interval));
		$zoom = 0 if ($zoom <0);
	$zoomsign = 'масштаб: '.$zoom.'%';
                $zoomsign = '*график растягивается, увеличивать масштаб можно левой клавишей мышки' if ($zoom == 0);
        }
	$old_interval = $interval;
        $zoomsign = '*график растягивается, увеличивать масштаб можно левой клавишей мышки' unless ($zoom);
        if ($lang eq 'en_US.UTF-8'){
		$zoomsign = '';

	}
	@data = (\@timeline, \@v_in, \@v_out);
	@data2 = (\@timeline, \@v_acc);
	if ($chart_type eq 'p'){
		@data3 = (\@timeline, \@power);
	} else {
		@data3 = (\@timeline, \@current);
	}
	return($chart_period);
}

sub convert_dates{
        my $date = shift;
        #my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($date);
	my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($date);
        $year += 1900;
        $sec = sprintf("%02d", $sec);
        $min = sprintf("%02d", $min);
        $hour = sprintf("%02d", $hour);
	$mday = sprintf("%02d", $mday);
        $mon = sprintf("%02d", $mon+1);
        my $sqlite_date = "$year-$mon-$mday $hour:$min:$sec"; #SQLite date old->#my $sqlite_date = "$mday/$mon/$year $hour:$min:$sec";
        return($sqlite_date);
}


sub write_charge_time{
	my ($mem, $value) = @_;
        return if ($value eq "-");
        #$value = int($value*60/16); #because
        $value = sprintf("%01d", ($value*60/16));
        &writemap($mem, $value);
}

sub write_net_type{
        my ($mem, $value) = @_;
        return if ($value eq "-");
        $value = $value*10; #because
        &writemap($mem, $value);
}


sub write_capacity{
	my ($mem, $capacity) = @_;
        return if ($capacity eq "-");
        $capacity = $capacity/10; #because
        &writemap($mem, $capacity);
}

sub write_current{
        my ($mem, $current) = @_;
        return if ($current eq "-");
        $current = $current*100; #because
        &writemap($mem, $current);
}

sub write_voltage_acc{
        my ($mem, $voltage) = @_;
        return if ($voltage eq "-");
	$qty = 1 unless ($qty);
        $voltage = $voltage*10/$qty; #because acc_voltage is stored in 12v*$qty (quantifyer = 1, 2, 4);
        &writemap($mem, $voltage);
}

sub write_voltage{
	my ($mem, $voltage) = @_;
	return if ($voltage eq "-");
	$voltage = $voltage-100; #because
	&writemap($mem, $voltage);
}

sub write_time{
	my ($mem, $hours, $mins) =@_;
	return if ($hours eq "-");
	return if ($mins eq "-");
	$hours = int($hours);
	$mins = int($mins);
	$hours = 0 if (!$hours);
	$mins = 0 if (!$mins);


	my $hours_bin = unpack("B32", pack("N", $hours)); #hours in binary
        #$hours_bin =~ s/^0+(?=\d)//;   # otherwise you'll get leading zeros
	$hours_bin = sprintf("%05d", $hours_bin); #5 bits
	
	$mins = $mins/10;
        my $mins_bin = unpack("B32", pack("N", $mins)); #minutes in binary
	$mins_bin = sprintf("%03d", $mins_bin);   #3 bits
	my $entire_byte = "$hours_bin"."$mins_bin";
	my $dec = unpack("N", pack("B32", substr("0" x 32 . $entire_byte, -32))); #to dec
	#print "mem=$mem hour=$hours mins=$mins hours_bin=$hours_bin mins_bin=$mins_bin entire_byte=$entire_byte dec=$dec\n";
	&writemap($mem, $dec);
}

sub write_map{
        my ($name,$value) = @_; #print "writting to map $name => $value\n"; #addr 0x138 = 312 //0 - Чистый Sin 5%, 1- Оптимальный Sin 5% до 200В, 2 -Pmx Sin 20%
	&writemap($name, $value);

	#initiate values!
	&writemap(0,7);
}



sub readings{
	exit if ($disconnected);
	#my ($coords_x, $coords_y) = $mw->pointerxy;
	#$c->itemconfigure($coords_curs,-text => "x=$coords_x y=$coords_y");

	
	$logcount++;
	$logcount = 1 if ($logcount == 0);	
	$logcount = 1 if ($logcount > 2);
	$log{$logcount}{'count'}++;
	#$testcount ++;

	my $colorfill;
	my $mem; #delete afterwards!
	my $answer = "";
	my $value;
	my ($acc_type_text, $capacity_entire_text);
	my ($bs, $times_map, $addr1033, $socket_voltage_in, $addr1060, $freq_on_socket, $freq_on_acc, $u_socket_out);
	my ($current_acc, $current_net) = (0,0);
	my $status_acc=0;
	my ($err1066, $err1067, $err1068, $err1069, $addr1070, $addr1071, $addr1072);

	$map_operation = 33;
	@mapcommand =('P', 'C', 'P', 'R', '4', '0', '0', '6', 'C', "\r", "\n");
	my ($ans1, $ans2) = (0,0);
	($map_operation, $bs, $bs, $bs, $acc_status, $ans1, $ans2, $bs,
        $current_acc, $addr1033, $bs, $bs, $bs, $bs, $bs, $bs) = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
	($map_operation, $bs, $bs, $bs, $acc_status, $ans1, $ans2, $bs,
	$current_acc, $addr1033, $bs, $bs, $bs, $bs, $acc_discharged, $bs) = readmappage('1024') unless ($port_not_opening); #last is 1039

	#print "logcount = $logcount\n";
	#print "acc_discharged = $acc_discharged testcount=$testcount\n";
	#$acc_discharged = 50 if ($testcount > 5);
	#print "Turn GRID off and I will -- Shutdown NOW!" if ($testcount > 5);
	
	if ($port_not_opening) { #ячейка 1024; #Режим работы мап
		$reading = "Нет соединения с МАП-ом ($port_not_opening)";
		$answer = 33;
		$colorfill = 'orangered2';
	} else { #port is ok
		#$answer = int(readmap('1024')); #Режим работы мап
		if ($map_operation == 3 || $map_operation == 4){ #w/grid!
			$colorfill = '#10f0f0';
			#$map_operation = 3;
			&shutdownabort if (($acc_discharged > 55) && ($count_shutdown > 0)); #stop shutdown!
		} else { #batt_power!
			$colorfill = '#48f878';
			#$map_operation = $answer;
			#print "Shutdown NOW!" if ($testcount > 5);
			&shutdown if ($acc_discharged < 55); #on batt power
		}
	}
	$c->itemconfigure($status_map, -text => "$MapStatuses{$lang}{$map_operation}", -fill=>$colorfill);
	$log{$logcount}{'status_map'} = $map_operation;


	&connect if ($map_operation == 33);

	unless ($port_not_opening){
		$current_acc = $current_acc*2;
		$log{$logcount}{'current_acc'} = $current_acc;
	}
	

	unless ($port_not_opening) {
        	$log{$logcount}{'status_acc'} = $acc_status;
		$Cacc = 100*$acc_status/3; #4-100% 4=100 a=x x=100*a/4
        	$Cacc = $Cacc - 10 if ($log{$logcount}{'status_map'} == 4);
        	$Cacc = sprintf("%.0f", $Cacc);
		if ($lang eq 'en_US.UTF-8'){
			$Cacc_text = 'Batt. state: '.$EnStateUAcc{$lang}{$acc_status}.' '.$Cacc.'%';
		} else {
			$Cacc_text = 'Состояне АКБ: '.$EnStateUAcc{$lang}{$acc_status}.' '.$Cacc.'%';
		}		
	} else {
		if ($lang eq 'en_US.UTF-8'){
			$Cacc_text = 'Batt. state: n/a ';
		} else {
			$Cacc_text = 'Состояне АКБ: н/д ';	
		}
	}
	my $pos = 90; #initially down
	$answer = 0;
	#($ans1, $ans2)= (0,0);
	if ($port_not_opening) { 
		$reading = 0;
		$answer = 0;
		$pos = 0; # (90-9*$qty)/6; #hand down
	} else {
		#my ($ans1, $ans2)= (0,0);
        	#$ans1 = int(readmap('1029')) unless ($port_not_opening); #v_acc -- _St_UAcc_med_VH;
        	#$ans2 = int(readmap('1030')) unless ($port_not_opening);
	       	$answer = ($ans1*256 + $ans2)/10;
		$qty = 1 if (!$qty);
		$pos = ($answer/$qty-9)/6; #what % is $answer of 6 tick scale
	}
	my $x = 166 - 100.0 * (cos( $pos * PI )); #was 100 -90*
        my $y = 250 - 100.0 * (sin( $pos * PI ));
        $c->coords('needle1', 166, 250, $x, $y);
	if ($lang eq 'en_US.UTF-8'){
		$reading = sprintf("%.1fV", $answer);	
	} else {
		$reading = sprintf("%.1f В ", $answer);
	}
	$c->itemconfigure($voltage_acc_text,-text => $reading);
        $log{$logcount}{'v_acc'} = $answer;

	($socket_voltage_in, $current_net, $addr1060, $freq_on_socket, $freq_on_acc, $u_socket_out, $bs, $bs,
        $err1066, $err1067, $err1068, $err1069, $addr1070, $addr1071, $addr1072, $bs) = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
	($socket_voltage_in, $current_net, $addr1060, $freq_on_socket, $freq_on_acc, $u_socket_out, $bs, $bs, 
	$err1066, $err1067, $err1068, $err1069, $addr1070, $addr1071, $addr1072, $bs) = readmappage('1058') unless ($port_not_opening); #1058-1073
	#print "port_not_opening=$port_not_opening\n";
	
	@mapcommand =('P', 'C', 'R', 'D', '4', '0', '0', '6', 'C', "\r", "\n"); #back to default


	unless ($port_not_opening){
                $current_net = $current_net;
                $log{$logcount}{'current_net'} = $current_net;
        }

	# Показываем напряжение входной розетки
        #$mem = 1058; #"Напряжение входной розетки - данные от SPI: ";
        #$answer = &readmap($mem) unless ($port_not_opening);
        $socket_voltage_in = 0 if ($port_not_opening); #no connection!
        $socket_voltage_in += 100 unless ($socket_voltage_in == 0);
	if ($lang eq 'en_US.UTF-8') {
		$reading = sprintf("%.0fV", $socket_voltage_in);
	} else {
        	$reading = sprintf("%.0f В", $socket_voltage_in);
	}
        $c->itemconfigure($status_volt_in,-text => $reading, -fill=>$colorfill);
        $log{$logcount}{'v_in'} = $socket_voltage_in;	

	#$mem = 1061; # freq  #read 1062 when on acc!
        if ($map_operation == 3 || $map_operation == 4){
		$answer = $freq_on_socket;
	} else {
		$answer = $freq_on_acc;
	}
	if ($port_not_opening) {
		if ($lang eq 'en_US.UTF-8') {
			$reading = 'n/a';
		} else {
			$reading = 'н/д';
		}
	} else {
		if ($lang eq 'en_US.UTF-8') {
			$reading = sprintf("%.0f Hz", $answer);
		} else {
			$reading = sprintf("%.0f Гц", $answer);
		}
	}
        $c->itemconfigure($status_freq,-text => $reading, -fill=>$colorfill);
        $log{$logcount}{'freq'} = $answer;

	unless ($port_not_opening){
		$answer = $u_socket_out + 100;
	} else { 
		$answer = 0; #no connection!
	}
	$answer = 190 if ($answer == 0);	
	$pos = (($answer-190)/6)/10; #print "1063 = $pos\n"; #print "answer=$answer pos=$pos\n";
	$x = 475 - 90.0 * (cos( $pos * PI )); #was 100 -90*
        $y = 250 - 90.0 * (sin( $pos * PI ));
	$c->coords('needle2', 475, 250, $x, $y);
	$answer = 0 if ($port_not_opening); #no connection!
	if ($lang eq 'en_US.UTF-8') { 
		$reading = sprintf("%.0fV", $answer);
	} else {
		$reading = sprintf("%.0fВ", $answer);
	}
        $c->itemconfigure($voltage_socket_out_text,-text => $reading);
	$log{$logcount}{'v_out'} = $answer;

	$answer = $addr1070 - 50;
	unless ($port_not_opening){
		$answer = $addr1070 - 50;
		$reading = sprintf("%.0f°C", $answer);
		$temp_batt = $answer;
		if ($lang eq 'en_US.UTF-8') {
			$temp_batt_text = 'Batt. temp.: '. $reading;	
		} else {
			$temp_batt_text = 'Температура АКБ: '. $reading;
		}
		$log{$logcount}{'t_acc'} = $answer;
	} else {
		if ($lang eq 'en_US.UTF-8') {
			$reading = 'n/a';
		} else {
			$reading = 'н/д';
		}
	}
	$c->itemconfigure($status_batt_text,-text => $reading, -fill=>$colorfill);

	unless ($port_not_opening){
		$temp_transistors_text = sprintf("%.0f°C", ($addr1071 - 50));
		$log{$logcount}{'t_trans'} = $temp_transistors_text;
	} else {
		if ($lang eq 'en_US.UTF-8') {
			$temp_transistors_text = 'n/a';
		} else {
			$temp_transistors_text = 'н/д';
		}
	}
	$c->itemconfigure($temp_transistors_sign, -text => $temp_transistors_text, -fill=>$colorfill);

	unless ($port_not_opening){
		$temp_tor_text = sprintf("%.0f °C", ($addr1072 - 50));	
		$log{$logcount}{'t_tor'} = $temp_tor_text;
	} else {
		if ($lang eq 'en_US.UTF-8') {
			$temp_tor_text = 'n/a';
		} else {
			$temp_tor_text = 'н/д';
		}
	}
	$c->itemconfigure($temp_tor_sign, -text => $temp_tor_text, -fill=>$colorfill);

	@mapcommand =('P', 'C', 'P', 'R', '4', '0', '0', '6', 'C', "\r", "\n");

	($acc_type, $capacity_entire, $current_start_charge, $current_end_charge, $charge_alg, $map_acc_charge_end, $map_acc_sust_charge, $map_acc_charge_start,
                $bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs) = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
	($acc_type, $capacity_entire, $current_start_charge, $current_end_charge, $charge_alg, $map_acc_charge_end, $map_acc_sust_charge, $map_acc_charge_start,
		$bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs) = readmappage('384') unless ($port_not_opening);
	#my %batt_types = ('0' => 'Кислотный Рег', 1 => 'Гелевый/AGM T', 2 => 'Кислотный T', 3 => 'Щелочной', );

	if ($port_not_opening){
		if ($lang eq 'en_US.UTF-8') {
			$acc_type_text = 'n/a';
		} else {
			$acc_type_text = 'н/д';
		}
	} else {
		$acc_type_text = $batt_types{$lang}{$acc_type};
	}
	$c->itemconfigure($status_batt_type_text,-text => $acc_type_text, -fill=>$colorfill);

	if ($port_not_opening){
		if ($lang eq 'en_US.UTF-8') {
			$capacity_entire_text = 'n/a';
		} else {
			$capacity_entire_text = 'н/д';
		}
	} else {
		$capacity_entire = $capacity_entire*10;
		if ($lang eq 'en_US.UTF-8') {
			$capacity_entire_text = sprintf("%.0f Ah", $capacity_entire);
                        $capacity_entire_text = $capacity_entire_text .'* '. ($qty*12).'Vdc';
		} else {	
			$capacity_entire_text = sprintf("%.0f Ач", $capacity_entire);
			$capacity_entire_text = $capacity_entire_text .'* '. ($qty*12).'В';
		}
	}
	$c->itemconfigure($status_batt_text,-text => $capacity_entire_text, -fill=>$colorfill);
	$current_start_charge = $current_start_charge/100;
	$current_end_charge = $current_end_charge/100;
	$map_acc_charge_end = sprintf("%.1f", (($map_acc_charge_end/10)*$qty));
	$map_acc_sust_charge = sprintf("%.1f", (($map_acc_sust_charge/10)*$qty));
	$map_acc_charge_start = sprintf("%.1f", (($map_acc_charge_start/10)*$qty));
	@mapcommand =('P', 'C', 'R', 'D', '4', '0', '0', '6', 'C', "\r", "\n"); #back to default

	$mem = 0;
	$addr1033 = 0 unless ($addr1033);
	$mem = int($addr1033);
	$mem = 0 unless ($addr1033);
	if ($lang eq 'en_US.UTF-8') {
		$reading = 'Batt. output power: '; 
	} else {
		$reading = 'Мощность по АКБ: ';
	}
	if (($map_operation == 3) || ($map_operation == 4)){ #net
		$mem = int($addr1060); #map power net
		$mem = 0 unless ($addr1060);
		if ($lang eq 'en_US.UTF-8') {
			$reading = 'Grid output power: ';
		} else {
			$reading = 'Мощность по сети: ';
		}
	} 
	$log{$logcount}{'date'} = &timestamp;
	$log{$logcount}{'power'} = 0;
	unless ($port_not_opening) {
		$answer = $mem/10; #power
		$powermeter = $answer*100; #for chart!
	
		#print "power=$powermeter\n";
	
		$power_text = $reading.sprintf("%.1f kW", $answer);
		$c->itemconfigure($power_text,-text => $reading, -fill=>$colorfill);
		$log{$logcount}{'power'} = $answer;
		my $errnum = '';

		$answer= $err1069;  #1024+45 (AddrMem+_St_RSWarning);
		#print "1069=$answer\n";
		for (my $i=1; $i<256; $i=$i*2) {
        		if (($answer&$i)!=0) {
				$timestamp = &timestamp;
				$errnum = ($answer&$i);
				$warnings = "$EnWarning{$errnum}";
				#$prompt_warning->Show();
				
				#my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile","","");
                		#$dbh->do("INSERT INTO maperr 
                        	#(date, errtype, errnum, errhuman)
                        	#	VALUES (?,?,?,?)", undef, 
				#	"$timestamp", '1069', "$errnum", "$warnings"	
                		#);
               			#$dbh->disconnect;
			} 
			
		}
		$err1069 = 0;
		if ($answer==0) {
			$warnings = 'теперь всё ок!';
			#$prompt_warning->Exit;
		}

                $answer= $err1066;  #1024+42 (AddrMem+_St_RSWarning);
                for (my $i=1; $i<256; $i=$i*2) {
                        if (($answer&$i)!=0) {
				$timestamp = &timestamp;
				$errnum = ($answer&$i);
                                $errors = "$EnErrSis{$errnum}";
                        	#my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile","","");
                                #$dbh->do("INSERT INTO maperr 
                                #(date, errtype, errnum, errhuman)
                                #        VALUES (?,?,?,?)", undef, 
                                #        "$timestamp", '1066', "$errnum", "$errors"
                                #);      
                                #$dbh->disconnect;
			} 
                }
		$err1066 = 0;
                if ($answer==0) {
			$errors = 'теперь всё ок!';
                        #$prompt_errors->Exit;
                }
                $answer= $err1067;  #1024+43
		#print "1067=$answer\n";
                for (my $i=1; $i<256; $i=$i*2) {
                        if (($answer&$i)!=0) {
				$timestamp = &timestamp;
				$errnum = ($answer&$i);
                                $errors_JobM = "$EnErrJobM{$errnum}";
				#my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile","","");
                                #$dbh->do("INSERT INTO maperr
				#	(date, errtype, errnum, errhuman) VALUES (?,?,?,?)", undef, "$timestamp", '1067', "$errnum", "$errors_JobM"
                                #);
                                # $dbh->disconnect;
                        }
                }
		$err1067 =0;
                if ($answer==0) {
                        $errors_JobM = 'теперь всё ок!';
                        #$prompt_errors_JobM->Exit;
                }		
                $answer= $err1068;  #1024+44 (AddrMem+_St_RSWarning);
                for (my $i=1; $i<256; $i=$i*2) {
                        if (($answer&$i)!=0) {
				$timestamp = &timestamp;
				$errnum = ($answer&$i);
                                $errors_ErrJob = "$EnErrJob{$errnum}";
				#my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile","","");
                                #$dbh->do("INSERT INTO maperr 
                                #(date, errtype, errnum, errhuman)
                                #        VALUES (?,?,?,?)", undef,
                                #        "$timestamp", '1068', "$errnum", "$errors_ErrJob"
                                #);
                                # $dbh->disconnect;
                        }
                }
		$err1068 = 0;
                if ($answer==0) {
                        $errors_ErrJob = 'теперь всё ок!';
                        #$prompt_errors_ErrJob->Exit;
                }

	}#end of power and errors	
	#if ($settings){
		
		$read_counter++;
		my ($map_version, $map_VerPlatPow, $map_chip_num,$map_versions_power_num, $map_dev_vers);
		#unless ($read_counter > 1){ #no need to read more than once
			@mapcommand =('P', 'C', 'P', 'R', '4', '0', '0', '6', 'C', "\r", "\n");
			($map_version, $map_VerPlatPow, $map_chip_num,$bs,$bs,$map_versions_power_num, $map_dev_vers,
                        $bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs ) = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
			($map_version, $map_VerPlatPow, $map_chip_num,$bs,$bs,$map_versions_power_num, $map_dev_vers,
			$bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs ) = readmappage('0') unless ($port_not_opening); #read a page of 16 bytes after address=0 
			my %device_vers = ( '0' => '','1'=> 'МАП', '2' => 'МАП LCD', '3' =>'SIN');
			%device_vers = ( '0' => '','1'=> 'MAC', '2' => 'MAC LCD', '3' =>'SIN') if ($lang eq 'en_US.UTF-8');
			my $map_version_type = $device_vers{$map_version};
			%device_vers = ( '0' => '1','1'=>'1.5','2'=>'2','3'=>'3',4=>'4.5',5=>'6',6=>'9',7=>'12');
			my $map_power_num = $device_vers{$map_versions_power_num};
			my $map_versions_power = $map_power_num.'кВт';
			$map_versions_power = $map_power_num.'kWt' if ($lang eq 'en_US.UTF-8');
			$map_power = $device_vers{$map_version};
                	%device_vers = ( '0' => '12','1'=>'24','2'=>'48');
			my %device_qty = ( '0' => '1','1'=>'2','2'=>'4');
                	my $map_versions_uacc = $device_vers{$map_dev_vers};	
			$qty = $device_qty{$map_dev_vers};
			my $temporarty = $map_chip_num;
			my $real = $temporarty>>5;
			my $int = $map_chip_num&0x1F;

			
			#if (($real < 8) && ($int <5)){ #will not work w/this version!
			#	$errors_version = 'Обновите прошивку МАП!'. " (ваша версия $real\.$int)";
			#	$prompt_errors_version = $mw->Dialog(-title => 'Ошибки:', -textvariable => \$errors_version, -bitmap => 'warning', -font=>'bar_rus');	
			#	$prompt_errors_version->after( 3000, sub {$prompt_errors_version->Exit });
			#	$prompt_errors_version->Show();				
			#}
			my $map_version_chip = ' ПО: '.$int.'.'.$real;
			$map_version_chip = ' Rel: '.$int.'.'.$real if ($lang eq 'en_US.UTF-8');
			$map_versions = $map_versions_uacc.'В/'.$map_versions_power.' Тип: '.$map_version_type.' Плата: '.$map_VerPlatPow.'.0'.' '.$map_version_chip;
			$map_versions = $map_versions_uacc.'Vdc/'.$map_versions_power.' Type: '.$map_version_type.' Chipset: '.$map_VerPlatPow.'.0'.' '.$map_version_chip if ($lang eq 'en_US.UTF-8');;
			$map_power = $map_power_num+0.5;
			$map_current_max = ($map_power_num*1000/(($qty*$map_versions_uacc)))+($map_power_num*1000/(($qty*$map_versions_uacc))*0.3); #1000/12; +333
			$c->itemconfigure($map_versions_text,-text => $map_versions);
			@mapcommand =('P', 'C', 'R', 'D', '4', '0', '0', '6', 'C', "\r", "\n"); #back to default
		#}           
	if ($settings){

				
		@mapcommand =('P', 'C', 'P', 'R', '4', '0', '0', '6', 'C', "\r", "\n");
		($signal_form, $bs, $map_voltage_generated, $bs, $bs, $map_voltage_acc_gen_end, $load_start,
                $bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs) = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
		($signal_form, $bs, $map_voltage_generated, $bs, $bs, $map_voltage_acc_gen_end, $load_start,
		$bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs) = readmappage('312') unless ($port_not_opening);
		
		$map_voltage_generated = 100 + $map_voltage_generated;
		$map_voltage_acc_gen_end = sprintf("%.1f", (($map_voltage_acc_gen_end/10)*$qty));
		$load_start = sprintf("%02d", $load_start);
	
		($net_type_label, $map_net_level_upper, $map_net_level_lower, $net_control_alg, $map_min_extra_gen_level, $times, $times2,
                        $bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs ) =	(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
		($net_type_label, $map_net_level_upper, $map_net_level_lower, $net_control_alg, $map_min_extra_gen_level, $times, $times2, 
			$bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs )= readmappage('360') unless ($port_not_opening); #
		$net_type_label = ($net_type_label/10);
		$map_net_level_upper = 100 + $map_net_level_upper;
		$map_net_level_lower = 100 + $map_net_level_lower;
		$map_min_extra_gen_level = sprintf("%.1f", (($map_min_extra_gen_level/10)*$qty));
	
		($acc_consrv, $lcd_backlight, $sound_control, $bs, $conn_speed, $times_map, $map_max_charge_time, 
			$bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs) = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
		($acc_consrv, $lcd_backlight, $sound_control, $bs, $conn_speed, $times_map, $map_max_charge_time, 
			$bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs, $bs) = readmappage('433') unless ($port_not_opening);		
		$map_max_charge_time = sprintf("%01d", (($map_max_charge_time)*16/60));

		@mapcommand =('P', 'C', 'R', 'D', '4', '0', '0', '6', 'C', "\r", "\n"); #back to default
		unless ($port_not_opening) { 						#0x1b6 = 438 map time
			#my $times_map = &readmap('438');
			$time_hours_map = $times_map>>3;
			$time_hours_map = sprintf("%02d", $time_hours_map);
			$time_minutes_map = $times_map&0x7;
			$time_minutes_map *= 10;
			$time_minutes_map = sprintf("%02d", $time_minutes_map);
			if ($lang eq 'en_US.UTF-8'){
				$real_time_label = 'Set internal clock '.$time_hours_map.':'.$time_minutes_map.' ';
			} else {
				$real_time_label = 'Установка времени '.$time_hours_map.':'.$time_minutes_map.' ';
			}
			#$times = &readmap('365'); #0x16d = 365
			$time_savings_begin_hours = $times>>3;
                        $time_savings_begin_hours = sprintf("%02d", $time_savings_begin_hours);
                        $time_savings_begin_minutes = $times&0x7;
                        $time_savings_begin_minutes *= 10;
                        $time_savings_begin_minutes = sprintf("%02d", $time_savings_begin_minutes);
			if ($lang eq 'en_US.UTF-8'){
				$time_savings_begin_label = 'Low Cost Savings / Time Settings Begin ('.$time_savings_begin_hours.':'.$time_savings_begin_minutes.')';
			} else {
                        	$time_savings_begin_label = 'Мин Тариф Начало ('.$time_savings_begin_hours.':'.$time_savings_begin_minutes.')';
			}
			#$times2 = &readmap('366'); #0x16e = 366
                        $time_savings_end_hours = $times2>>3;
                        $time_savings_end_hours = sprintf("%02d", $time_savings_end_hours);
                        $time_savings_end_minutes = $times2&0x7;
                        $time_savings_end_minutes *= 10;
                        $time_savings_end_minutes = sprintf("%02d", $time_savings_end_minutes);
			if ($lang eq 'en_US.UTF-8'){
				$time_savings_end_label = 'Low Cost Savings / Time Settings End ('.$time_savings_end_hours.':'.$time_savings_end_minutes.')';
			} else {
				$time_savings_end_label = 'Мин Тариф Конец ('.$time_savings_end_hours.':'.$time_savings_end_minutes.')';
			}
		}
		my $dbfile = $homedir.'/sqlite.db';
        	my $filesize;
        	$os = $^O;
        	if ($os =~ /Win/i){
                	$databasepath = $homedir.'\sqlite.db';
                	$filesize = format_bytes(-s $databasepath); # 4.5M
                	$homedirtext = 'База данных: '.$homedir.'\sqlite.db'. " (Размер: $filesize)";
        	} else {
                	$databasepath = $homedir.'/sqlite.db';
                	$filesize = format_bytes(-s $databasepath); # 4.5M
                	$homedirtext = 'База данных: '.$dbfile. " (Размер: $filesize)";
	        }
		
		$read_counter = 10 if ($read_counter > 1000);
	}
	#print "logcount = $logcount\n";
	#&logme(%log) if (($logcount == 2) && (!$port_not_opening)); #process only second entries
	
	if ($log{$logcount}{'v_acc'} > 0){
		my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile","","");
		$dbh->do("INSERT INTO maplog 
			(count, date, status_map, status_acc, v_acc, v_in, v_out, power, current_acc, current_net, freq, t_acc, t_tor, t_trans)
                	VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)", undef,
                        "$log{$logcount}{'count'}","$log{$logcount}{'date'}","$log{$logcount}{'status_map'}","$log{$logcount}{'status_acc'}","$log{$logcount}{'v_acc'}",
                        "$log{$logcount}{'v_in'}","$log{$logcount}{'v_out'}","$log{$logcount}{'power'}","$log{$logcount}{'current_acc'}","$log{$logcount}{'current_net'}",
			"$log{$logcount}{'freq'}","$log{$logcount}{'t_acc'}","$log{$logcount}{'t_tor'}","$log{$logcount}{'t_trans'}"
                );
        	$dbh->disconnect;
	}
	#&connect if ($port_not_opening);
	if ($port_not_opening){
		if ($conn_try_count > 2) { #manual connect
			&connect;
		} else {
			open_uart($port_not_opening);
			$conn_try_count=0;
		}
	}


}

sub timestamp {
	my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
	$year += 1900;
	$sec = sprintf("%02d", $sec);
	$min = sprintf("%02d", $min);
	$hour = sprintf("%02d", $hour);
	$mday = sprintf("%02d", $mday);
	$mon = sprintf("%02d", ($mon+1)); #don't know why
	my $sqlite_date = "$year-$mon-$mday $hour:$min:$sec"; 
	return($sqlite_date);
}

sub digit2ascii {
        my $digit=shift;
        if ($digit<10) {
                $digit=$digit+0x30; #print "digit2ascii digit = $digit\n";
        } else {
                $digit=$digit+0x41-10;
        }
        return $digit;
}

sub ascii2digit {
        my $ascii=shift;
        return 0x255 if ($ascii<0x30);
        if ($ascii>=0x41) {
                $ascii=$ascii-0x41+10;
        } else {
                $ascii-=0x30;
        }
        return 255 if ($ascii>15);
        return $ascii;
}
sub readmap { # READ from MAP 

        my $addr= shift;
        my ($error, $answer, $checksum);
        my ($a0, $a1, $a2, $s0, $s1);
        my $data;
	@mapcommand =('P', 'C', 'R', 'D', '4', '0', '0', '6', 'C', "\r", "\n");
	return if ($port_not_opening); #print "Read Map recieved $addr\n" if ($debug);

	my $temp = $addr>>8;
        $a0=&digit2ascii($temp);
	$temp = ($addr>>4)&0x0F;
        $a1=&digit2ascii($temp);
	$temp = $addr&0x0F;
        $a2=&digit2ascii($temp);

        $mapcommand[4]=chr($a0);
        $mapcommand[5]=chr($a1);
        $mapcommand[6]=chr($a2);

        $checksum=(255-($a0+$a1+$a2)+1)&0xff;

	$temp = ($checksum>>4)&0x0F;
        $s0=&digit2ascii($temp);
	$temp = $checksum&0x0F;
        $s1=&digit2ascii($temp);

        $mapcommand[7]=chr($s0);
        $mapcommand[8]=chr($s1);
	#my $text = "$mapcommand[0]$mapcommand[1]$mapcommand[2]$mapcommand[3]$mapcommand[4]$mapcommand[5]$mapcommand[6]$mapcommand[7]$mapcommand[8](rn)";
	#print "mapcommand: addr=$addr command=$text";
        $answer="";

        my $result = send_mapcommand_to_device(@mapcommand); #send mapcommand byte by byte, wait for echo ... 

        if ($result != 0) {
	$error=2; #die ("Ошибка чтения последовательного порта $error");
                #$port_not_opening = $port_in_use;
                return 0xff;
	}
        
        ($result, $answer) = wait_device_response();
        if ($result != 0){
		$error=3;
		#$port_not_opening = $port_in_use; #die ("Ошибка чтения последовательного порта $error");
	}
	chop ($answer);
        chop ($answer); #print " [DESCISION: $answer] " if ($debug);

        if ($answer=~/MOk/ ) {

		$temp = (ord(substr($answer,3,1)));
                $a0=&ascii2digit($temp);
		$temp = (ord(substr($answer,4,1)));
                $a1=&ascii2digit($temp);
                $data=($a0<<4)+$a1;
                $error=0;
                return $data;
        } else {
                $error=1; #die ("Ошибка чтения последовательного порта $error");
                #$port_not_opening = $port_in_use;
        }
} # end ReadMap

sub readmappage { # READ from MAP 
        my $addr= shift;
        my ($error, $answer, $checksum, $a0, $a1, $a2, $data);
        $a0=digit2ascii($addr>>8);
        $a1=digit2ascii(($addr>>4)&0x0F);
        $a2=digit2ascii($addr&0x0F);
        $mapcommand[4]=chr($a0); $mapcommand[5]=chr($a1); $mapcommand[6]=chr($a2);
        $checksum=(255-($a0+$a1+$a2)+1)&0xff;
        $a0=digit2ascii(($checksum>>4)&0x0F); $a1=digit2ascii($checksum&0x0F);
        $mapcommand[7]=chr($a0); $mapcommand[8]=chr($a1);
        $answer='';
        my $result = send_mapcommand_to_device(@mapcommand); #send mapcommand byte by byte, wait for echo ... 
        if ($result != 0) {
                $error=2;
                #die ("Ошибка чтения последовательного порта $error");
                $port_not_opening = $port_in_use;
        }
        ($result, $answer) = wait_device_response();
        if ($result != 0){
                $error=3;
		#$port_not_opening = $port_in_use;
                die ("Ошибка чтения последовательного порта $error");
        }
        chop ($answer);
        chop ($answer);
        my $stringlength = length($answer) - 2;
        if ($answer=~/MOk/ ) {
                my $cnt=0; my $memnum=0;
                my @values=();
                my $string = '';
                my $b = 0;
                for (my $i=3; $i<$stringlength; $i=$i+2){
                        $a0=0; $a1=0; $data=0;
                        $b = $i+1;
                        $a0=ascii2digit(ord(substr($answer,$i,1))); #1
                        $a1=ascii2digit(ord(substr($answer,$b,1)));
                        $data=($a0<<4)+$a1;
                        push(@values, $data);
                }
                $error=0;
                return @values;
        } else {
                $error=1;
		#$port_not_opening = $port_in_use;
                #die ("Ошибка чтения последовательного порта $error");
        }
} # end ReadMapPage


sub prepare_eeprom { # write command to MAP 
	@mapcommand =('P', 'C', 'W', 'R', "\r", "\n"); # 0    1    2    3    4    5    6    7    8    9    10    11    12 
        my ($addr, $command) = @_;
        $addr = '0';
        $command = 3; #ComMAP_EEPromWR=3,//Необходимо установить эту команду, и следом произвести запись в EEProm, после этого флаг записи сбросится
        my ($error, $answer, $checksum, $data);
        my ($a0, $a1, $a2);
        my ($s0, $s1);
        my ($d0, $d1);
	my $temp;
        return if ($port_not_opening); #print "Read Map recieved $addr\n" if ($debug); 

	$temp = $addr>>8;
        $a0=&digit2ascii($temp);
	$temp = ($addr>>4)&0x0F;
        $a1=&digit2ascii($temp);
	$temp = $addr&0x0F;
        $a2=&digit2ascii($temp); 

        $mapcommand[4]=chr($a0);
        $mapcommand[5]=chr($a1);
        $mapcommand[6]=chr($a2); #print "a0=$a0 a1=$a1 a2=$a2 command=$command ";

	$temp = $command>>4;
        $d0 = &digit2ascii($temp);
	$temp = $command&0x0F;
        $d1 = &digit2ascii($temp);

        my $sum = 0; $sum = $a0+$a1+$a2+$command; $sum =0xff-$sum; $sum++;
	$temp = $sum>>4;
        $s0=&digit2ascii($temp);
	$temp = $sum&0x0F;
        $s1=&digit2ascii($temp); #print "d0=$d0 d1=$d1 s0=$s0 s1=$s1\n";

        $mapcommand[7]=chr($d0);
        $mapcommand[8]=chr($d1);
        $mapcommand[9]=chr($s0);
        $mapcommand[10]=chr($s1);
        $mapcommand[11]="\r";
        $mapcommand[12]="\n";

        $answer="";

        my $result = send_mapcommand_to_device(@mapcommand); #send mapcommand byte by byte, wait for echo ... 

        if ($result != 0) {
        $error=2; #die ("Ошибка чтения последовательного порта $error");
                $port_not_opening = $port_in_use;
                return 0xff;
        }

        ($result, $answer) = &wait_device_response;
        if ($result != 0){
                $error=3;
                $port_not_opening = $port_in_use; #die ("Ошибка чтения последовательного порта $error");
        }
        chop ($answer);
        chop ($answer); #print " [DESCISION: $answer]\n";

        if ($answer=~/MOk/ ) {
		
		$temp = ord(substr($answer,3,1));
                $a0=&ascii2digit($temp);
		$temp = ord(substr($answer,3,1));
                $a1=&ascii2digit($temp);
                $data=($a0<<4)+$a1;
                $error=0;
                return $data;
        } else {
                $error=1; #die ("Ошибка чтения последовательного порта $error");
                $port_not_opening = $port_in_use;
        }

} # end prepare_eeprom

sub writemap { # write command to MAP 

	&prepare_eeprom;

	@mapcommand =('P', 'C', 'W', 'R', '0', '0', '0', "\r", "\n"); # 0    1    2    3    4    5    6    7    8    9    10    11    12 
        my ($addr, $command) = @_;
        my ($error, $answer, $checksum, $data);
        my ($a0, $a1, $a2);
	my ($s0, $s1);
	my ($d0, $d1, $d2);
	my $temp;
        return if ($port_not_opening); #print "Read Map recieved $addr\n" if ($debug);

	$temp = $addr>>8;
        $a0=&digit2ascii($temp);
	$temp = ($addr>>4)&0x0F;
        $a1=&digit2ascii($temp);
	$temp = $addr&0x0F;
        $a2=&digit2ascii($temp);

        $mapcommand[4]=chr($a0);
        $mapcommand[5]=chr($a1);
        $mapcommand[6]=chr($a2); #print "a0=$a0 a1=$a1 a2=$a2 command=$command ";

	$temp = $command>>4;
	$d0 = &digit2ascii($temp);
	$temp = $command&0x0F;
	$d1 = &digit2ascii($temp); #was4 print "after &0x0f command = $command\n";


	my $sum = 0; $sum = $a0+$a1+$a2+$command; #print "sum of $a0+$a1+$a2+$command=$sum\n"; print "sum of 255 - $sum=";
	$sum = 255 - $sum; #print "$sum\n";	print "sum of $sum+1=";
	$sum = $sum + 1; #print "$sum\n"; #$sum = $sum *(-1) if ($sum <0); #print "pre sum=$sum\n"; #$checksum=(255-($a0+$a1+$a2)+1)&0xff;
	my $shifted = ($sum>>4)&0x0f; #was my $shifted = ($sum>>4); print "shifted = $shifted\n";
        $s0=&digit2ascii($shifted); #print "after >> s0=$s0\n";
	$shifted = $sum & 0x0F; #print "shifted now = $shifted\n";
        $s1=&digit2ascii($shifted); #print "a0=$a0 a1=$a1 a2=$a2 d0=$d0 d1=$d1 s0=$s0 s1=$s1 command=$command\n";
	
	$mapcommand[7]=chr($d0);
	$mapcommand[8]=chr($d1);
	$mapcommand[9]=chr($s0);
	$mapcommand[10]=chr($s1);
	$mapcommand[11]="\r";
	$mapcommand[12]="\n";

        $answer="";

        my $result = send_mapcommand_to_device(@mapcommand); #send mapcommand byte by byte, wait for echo ... 

        if ($result != 0) {
        $error=2; #die ("Ошибка чтения последовательного порта $error");
                $port_not_opening = $port_in_use;
                return 0xff;
        }

        ($result, $answer) = &wait_device_response;
        if ($result != 0){
                $error=3;
                #$port_not_opening = $port_in_use; #die ("Ошибка чтения последовательного порта $error");
        }
        chop ($answer);
        chop ($answer); #print " [DESCISION: $answer]\n";

        if ($answer=~/MOk/ ) {
		$temp = ord(substr($answer,3,1));
                $a0=&ascii2digit($temp);
		$temp = ord(substr($answer,3,1));
                $a1=&ascii2digit($temp); #was ($answer,4,1)
                $data=($a0<<4)+$a1;
                $error=0;
                return $data;
        } else {
                $error=1; #die ("Ошибка чтения последовательного порта $error");
                $port_not_opening = $port_in_use;
        }
} # end ReadMap

sub send_mapcommand_to_device { 
	my @mapcommand = @_;
	my $length = @mapcommand;
        #print "sending mapcommand to device: ", @mapcommand, "\n" if ($debug);
        my ($count_in, $string_in);
        my $ccnt = 0;
        for (my $i=0; $i< $length; $i++) {
                my $tosend = $mapcommand[$i];
		if (!defined($PortObj)){
	                        print "sudden disconnect at send_mapcommand_to_device first! port_in_use=$port_in_use\n";
				#$port_not_opening = 'ALL';
				$port_not_opening = $port_in_use;
                                &connect;
                                last;
                }
                my $sent = $PortObj->write($tosend);
           	while(1){ #receive echo
                        $ccnt++;
                        ($count_in, $string_in) = $PortObj->read(1);    #read 1 byte
                        if (!defined($string_in)){
				print "sudden disconnect second ! port_in_use=$port_in_use\n";
				$port_not_opening = $port_in_use;
				&connect;
				last;
			}
			last if ($ccnt > 250);
			next if ($string_in eq 'M');
			if ($count_in){
				return (-1) if ($count_in !=1); #error - can;t receive the byte
			}
                        last if ($string_in eq $tosend); #check if same char received, else continue while
                }
        }
        return 0; #no error
} # end send_mapcommand_to_device

sub wait_device_response {
        my $answer = "";
	my $ccnt = 0;
        while(1) {
		$ccnt++;
                my ($count_in, $string_in) = $PortObj->read(1); #read 1 byte
               	unless (defined($string_in)){
                                print "sudden disconnect second ! port_in_use=$port_in_use\n";
                                $port_not_opening = $port_in_use;
                                &connect;
                                last;
                }
		 if ($count_in != 1) { #err , return anyway the string too
                        return (-1, $answer);
                }
		last if ($ccnt > 250);
                $PortObj->write($string_in); #echo it
                $answer .= $string_in;
                return (0, $answer) if ($string_in eq "\n"); #exit ok, received string in answer
        }
}



sub shutdown {
	$count_shutdown++;
	#print "count_shutdown = $count_shutdown\n";

	if ($os =~ /Win/i){
		eval { require Win32;
			my $sMessage = "System Shutdown!\n";
			my $uTimeoutSecs = 45;
			my $bForce = 1;
			my $bReboot = "";
			if ($count_shutdown <= 1){
				Win32::InitiateSystemShutdown( "", $sMessage, $uTimeoutSecs, $bForce, $bReboot );
			}
		};
	} else { #linux
		system ('shutdown -t 5');		

	}
}
sub shutdownabort {
        $count_shutdown = 0;
        #print "count_shutdown = $count_shutdown\n";

        if ($os =~ /Win/i){
                eval { require Win32; Win32::AbortSystemShutdown("");};
	}
}



sub connect{
	#my $PortObj;
	my $Registry;
	my %RegHash;
	my (@keys, @values);
	#my $os = $^O;
	my (@ports);
	#my $buttonchoice;

	for (my $i=0; $i <= 20000; $i ++){ #start waiting for serial port to appear!
	#my @ok_ports = ('Exit');
	my @ok_ports = ();
	if ($os =~ /Win/i){
		eval {   require Win32;
                        require Win32::TieRegistry;
                        Win32::TieRegistry->import(TiedHash=>\%RegHash);
                        require Win32::SerialPort;
                        my $computer; my  $Registry= \%RegHash;
                        my @keys = keys( %{ $Registry->{"HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM"} } );
                        my @values = values( %{ $Registry->{"HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM"} } );
                        for (my $i=0; $i<@keys; $i++){
                                my $port_name = $keys[$i]; $port_name =~ s/\\//g; $port_name =~ s/\.//g;
                                next if ($port_name =~ /SmSrl/g); my $port = $values[$i];
                                eval {
                                        if ($PortObj = new Win32::SerialPort($port, 1)) { $PortObj->close; push(@ok_ports, $port);
                                	} else {
                                        	#print "$port not opening!\n"; 
					}
				}; 
			sleep (1);
                }};
	} else {
        	eval "use Device::SerialPort; 1" or die $@;
        	my $directory = '/dev';
        	opendir (DIR, $directory) or die $!;
        	while (my $file = readdir(DIR)) {
                	#print "$file\n";
                	push (@ports, "$directory/$file") if ($file =~ /ttyS/g);
                	push (@ports, "$directory/$file") if ($file =~ /ttyUSB/g);
        	}
        	closedir(DIR);
        	foreach my $port (@ports){
                	no warnings 'redefine';
                	local *Device::SerialPort::carp = sub {};
                	$PortObj = new Device::SerialPort($port, 1) or next;
                	$PortObj->close;
                	push(@ok_ports, $port);
                	sleep (1);
         	};
	}
	#ports ok is @ok_ports
	#foreach (@ok_ports){ print "these port options exist: $_\n";}

	$connbutt->destroy if (Exists($connbutt));
	
	#$connbutt = $mw-> Dialog(-title=>"Нет связи с МАП-ом:", -buttons => \@ok_ports, -bitmap => 'warning', -foreground=>'black', -background=>'red'); #->Show(); #print "conn=$connbutt\n";
	#my ($connbutt_text, $connbutt_text1, $connbutt_text2, $connbutt_text3);
	if ($lang eq 'en_US.UTF-8'){	
		$connbutt_text = 'Lack of communication w/mac:';
		$connbutt_text1 = 'Detecting COM ports:';
		$connbutt_text2 = 'while your COM port is being detected. If detected, please select it.';
		$connbutt_text3 = 'This dialog is updated every 5 seconds, please wait';

	} else {
		$connbutt_text = 'Нет связи с МАП-ом:';
		$connbutt_text1 = 'Программа ищет СОМ порты:';
		$connbutt_text2 = 'пока определится ваш порт и выберите его.';
		$connbutt_text3 = 'Окно обновляется каждые 5 секунд, подождите';
	}
	$connbutt = $mw-> Dialog(-title => $connbutt_text, -buttons => \@ok_ports, -bitmap => 'warning', -foreground=>'black',);
	$connbutt->Icon(-image => $ico);
	$connbutt->add("Label", -text => $connbutt_text1, -foreground=>'black', -font=>'bar_rus')->pack(-side=>'top');
	$connbutt->add("Label", -text => $connbutt_text2, -foreground=>'black', -font=>'bar_rus')->pack(-side=>'bottom');
	$connbutt->add("Label", -text => $connbutt_text3, -foreground=>'black', -font=>'bar_rus')->pack(-side=>'bottom');	

	if ($connbutt){
		$buttonchoice = $connbutt->bell;
		$buttonchoice = $connbutt->Show();
	}

	if ($buttonchoice eq 'Exit'){
		exit;
	} elsif ($buttonchoice) {
		open_uart($buttonchoice);
		$connbutt->destroy if (Exists($connbutt));
		return;

	} else { #people press the X signg
		if ($buttonchoice eq 'Exit'){
			if ($lang eq 'en_US.UTF-8'){
				$connbutt2 = $mw->Dialog(-title => 'Unable to launch program!', -text => 'Exit', -bitmap => 'warning', -font=>'bar_rus' )->Show();	
			} else {
				$connbutt2 = $mw->Dialog(-title => 'Запуск Невозможен!', -text => 'Завершить!', -bitmap => 'warning', -font=>'bar_rus' )->Show();
			}
			exit if ($map_operation == 33);#really disconnect
		}
		$connbutt->destroy if (Exists($connbutt));
		return;	
	}
	

	sleep(3);
	#$connbutt->forget;
	#$buttonchoice->forget;
	#$buttonchoice->destroy;
	$connbutt->destroy if (Exists($connbutt));
	#$buttonchoice->destroy;
	} #bye bye
	exit; #port didn't appear, exit the program for good

}
sub disconnect{
        unless ($port_not_opening){
                if ($PortObj){
                        $PortObj->close || warn "close failed";
                }
        }
}


sub open_uart {

	$port_in_use = shift;
	#print "will try $port_in_use\n";
        $port_not_opening ="";
        if ($os =~ /Win/i){ #win32
                eval {
                        $PortObj = new Win32::SerialPort ($port_in_use) or $port_not_opening = $port_in_use;
                };
        } else { #linux
                eval {
                        if ($PortObj = new Device::SerialPort ("$port_in_use")){
				#print "opening $port_in_use just fine\n";
			} else {
				#print "port $port_in_use not opening!\n";
				$port_not_opening = $port_in_use;
			}
                };
        }
	#print "Port not opening is $port_not_opening\n";
	return if ($port_not_opening);
        $PortObj->is_rs232;
        $PortObj->handshake("none");
	$PortObj->user_msg(1);
	#$PortObj->baudrate($conn_speed);
	$conn_speed = 19200 unless (defined $conn_speed);
	$conn_speed = 19200 if ($conn_speed < 9600);
	#$conn_speed = 19200;
	#print "conn_speed=$conn_speed\n";
	&connect unless ($PortObj->baudrate($conn_speed));
	#$PortObj->baudrate($conn_speed);
	#&connect;

        $PortObj->parity("none");
        $PortObj->databits(8);
        $PortObj->stopbits(1);
        $PortObj->read_const_time(100);       # 100 milliseconds 
        $PortObj->read_char_time(5);       #was 5   # avg time between read char
	$PortObj->buffers(4096, 4096);  # read, write
        $PortObj->parity_enable(1); 
	$PortObj->write_settings || undef $PortObj;
        #print "Can't change Device_Control_Block: $^E\n" unless ($PortObj);
}
































sub encoded_gif {

#END_OF_GIF
#return $gif;
#}

my $gif =  <<'END_OF_GIF';


R0lGODlhLAGtAOf/AAACAAEICwoHDhAHBggQHwgRFxwNBwkSEw8RDg8QIwQVGigODQUXIBQTNgsZ
HRMYHAYcHzcPEQodJQUeKwMfJw0cNSAaGhAeKyYaFQshJBwdGx4cIB4eFhsdKhQgJBofIwIlMQgk
KzAaGxAiKwsjMTUaFVMTE0sYEi8gHiwhIgcqNxMoKxwmKjAiGQ0qMSQlIhQoNAsqPCYmHz4gG0Qf
FCgnKyMkXAQwQRgqQw4tRi8mLSwnNw0xPA4wRFAgIiMuHxovMiopRCMtMSssKh8vOQc3TkEpLmMh
Gw03SVolGRU1UVEpHRA3Ww86RC8yS3wgHCE3Syw2OjQ1Mgw+TyQ5Oyo3Qgw+VSo6Kj80KVAvKjs1
Lyc7MD00OSc7NTc2Ozw1RgxEYXItIBhEWgtIW38tFxtDZhdHUyNEbBpKTZUrHHI0MC9EVwpOazhE
S0VATjxFNy9HTEBCTEhBQjRHREdDNFM9UjFEekJHMUNFRD1HRWg8NStNQ208K98gHWhAQxRYd2JG
RbkwJWhHMmJJOxlbayFbXEtSQi5XaipWgUZUU1xNXl9PRjpYXcwzH0FVaFBTUUpUW1hRUodGNlZS
XltVOrFAJxFqiShljY1OTek6FlhgaF5ea4VXQ0NmeRhzfk5la2ZgYVhlY2BjYXpcW4hZUStzdDZv
fntgUktpkkVvchd6nElyaY1hZOZTHnpqe25wblV1iGVzb190e9xVR3hvb3BwfhGMqx2MoORkJieQ
vY57b2mFgId9flmInmSHkHuCgCmZlHaHeW2Hn4aDj3iHkiGer36En7V4ehqfwdlxXoWHfFOUkrB9
a+N7Mm+VnHeXkKSMgo6SkJiRkyWt1aqSeR662GqnvyS+zpKiq6SepJ2joDjAvVu1xuKaS2W1s9GZ
l+GZaomvrtecibukm6Kzva+zsLixtyXe4FTZ3dS5vsO/xMDDtRfy87HIz8DFwunCfpbT2KjSyezF
m+LSxMvX4NTW1O3Q2uDi4O7iwNjp5vPi5e3m1enr6PHz8Pv++////yH5BAEKAP8ALAAAAAAsAa0A
AAj+AP8JHEiwoMGDCBMqXMiwocOHDKMNlOjuX7169zJqzIhRI8Z67kK60/av3MBXEFOqXMmypcuX
MGPKnCnQ5MWL/Pr528mzp8+fPvvxuyiyJM2jSJMqXcp0qbt7/KL20wmU51SqV7Ne3am1qr+sX/+R
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
END_OF_GIF
return $gif;
}


sub encoded_but1 {

#END_OF_GIF
##return $gif;
##}
#
my $gif =  <<'END_OF_GIF';

R0lGODlhyABIAOf/AA8TTxEUUAgXUhIVUQ0aVRkaUREcVwkgWhghVxElXxojWRUnXR0tYxQwZBoz
aBM4bBg9cSY+bihAcRlGeiZHdxdLfyBNey9MdyhSgTVPfCJXgzRVgC1diithiSNkkTlfgwBwlRJs
jBxrfylpmAZ0nylskzlpkBtykgl4mAB5qgx2q0dpjwR8pxZ4nSB3kSV2lk9rjDF1nCJ7jzF3kkhw
lTp0ly95jg+As0hzkRiAnzR6iQ2DpwCGsBGCrjx5jyWAlACLry6Ami2AozZ/lAWLtTWBkD9/j0F+
lTeAqCWEvRyJt0KAoiCKrkKDkkuBkiiKoSeLqk6Bn0GHkACXwDiJrEeHl06HkmGBnEOKoiuPvFuE
nRqVuRyUv1OImTCStyqVs1qKlmKJlz+Rsi2YrRSdxz+TrVqNn12NmVaPmhOez0qSpwCk01aPqWWO
qSmewF6TmFSVpUWZuw2n12SToGeTmSKi1GKWnCOkzkGcyVGcoU+bs2aXo2KYsGWYqhar23KVqm2Y
n02exXKXoj6kxUSiyCmqygG0402hwlOgux+t1j6m0gC43z6pwFygyRqx42Whunaeq3Sgp2CltH6d
rHyfp1ipsXKhtHGjr1Sqw3mjpCq13hq95Su52xa/34Sjs36mtISnr42ktYinqgDK6lC11k640D29
0WOzzYysr3ayuXqwwibG6JSrsIiuuJCstiPI4zPD6V66x1+6zna0z1y+wRbQ8JWxu5+vtZuyt52x
vSvP6TLN7xrV7mnBzjvN35a2uZq3tFPK3VnK1DfT7p25xGPI26K5vn7C2YfByZ29v6a6xonC1KK+
vDTa7au7wprBzkjZ5qjAxKzAv7K/v6jDuLW+xjbg7GLU5S/i9Efd5HPR3XHU6D/j727Y47rGx7fH
zbTJyErk+Z7P4LLLzzjs963N11fk8kvp9k7p7rvL2mvi8nPj7YPh7VHz+F/19L7e6sjd427295Ps
9Xv194fy+JD49Zv399jo7s7r8qb5+a73+qX99rz39ePw8/P5/P7//CH+EUNyZWF0ZWQgd2l0aCBH
SU1QACwAAAAAyABIAAAI/gABCBxIsKBBgwIOKlzIsKHDhxAjSpz4UEBCihgXJhQQgKPFjwFCihxJ
sqTJkyhTqlzJsqXLlyI5isxIk2DIjwUIECiQU+dOnkCDCh0q1KfRo0iTKl3K9CjRp1CjSiXq8yNH
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
v3ve594orQf+u4M/fOIX3/hmP35AAAA7
END_OF_GIF
return $gif;
}

sub encoded_but2 {

#END_OF_GIF
###return $gif;
###}
##
my $gif =  <<'END_OF_GIF';
R0lGODlhyABIAOf/AA4STwQWUBIWTBUXTg0aTxMeVBMfTxweTwsjURMnVhIoUQksVB0oUhguUhEx
Ux80WBg4VRo5XBY9VSM5WBpDWh5EVhlJWh1MWCRPVSpMZB1UWTJNYStPYitXYR5dYSNeXSJhWSpm
YCJpXjVmaDxmbSlyZCt0YDpyZTxxbSp4XTR7ZxuJRxmMPT19bjCCZxCPRRiNUDKFWC+FYiGLVUl+
dgeWSxSTUFJ9eCqNURGXPhCXRTGMVyeRTjyLVzeNUjWRTyWVWDKQagqfTDGTViyUXzyRVj2PbEiO
XkWQVj6RYgCmSxKgVFSJfDqUX0yNd0WTXxSlUUmScyifW0uUZgGsVkWXaDadXwCvTESYbz6adk+Y
aleWaTagaRStUkSeaTuiXQC1V1iXfiiqUGOTh1aZckGhdmGYeGCZc16dcGiYhh6zXiCyYzOtXlyf
eFihcTesZ2uagSywaWSed1aieWGehVOkc2GffgDAWiC1bBO8XmqfgEisbXKegE+qdkWtdkiuaSG8
V0SxZB68a22keG+jfSa6cRjBVSO9ZhHEXWSogDK6aW6mh3ikkjK+YXWmjQDOZjy7c0S5dhDLXX2m
jnqoiRzIYk+3g1O4fmuydl62fke/boSqjADWZYipk1W8fGa2iIGvkHqxk3K0jTHLbAfYZzzHfImv
kSDTY4axjCjSXDLPYVfDdETJeI6wmYmym1rCh0zIfQDhZ0jMcoa3ng/hYVbJhCLdZZK4mh7fbjbY
c5a3oJ22oWHKkIPCmpy5qhzmbmXOi0PaeyLnZpy+p6K9qFnZfXzMm5fDph7vZnTRnGDZiKm/uGfX
jS/ta6vBs0bmbq/BrqnEsFDmiVLnfi31ajXzcVrnkoTZqTf3ZVXubnDkj2LpjkrzdT/3dLHOvLfN
v6nVu5ratlj0e1/yf1T1g8TUunPzinLzkWr2jIb0lID1oLjhyon0oo30nMPh0cng0ZP2qJX1spr2
rJ71s6P2rrHwyKr2ub3yyrf2vrr1xLT3xc3u29fu3+Xz7PX69v3//CH+EUNyZWF0ZWQgd2l0aCBH
SU1QACwAAAAAyABIAAAI/gABCBxIsKDBgwYDBEB4UKHDhxAZSpxIsaLFixgbZtyIcaFCAAoFiBQA
UeGAAQ9PqlzJsqXLkhBdqoRJsyZMljAFyNzZkmSAkxAFgPzIsShBhyJ5Kl3KtKnTp1CjSl3pcaHR
jEhXEthKoIDXr2DDij0gNizZsmjTql3Ltq3bt2kJUAV5tWJInQO2FjDA1wCCBIAZMEgguDDhwogT
M1CgQLHjx48BSw4MubJlwZQva948OAFfr3IH+KzL0GFeAnz/LlbQoMGD1xFgP4hAuzbtCbhr455w
m3eE3LZ/8wYevLjx48iT61YufLfz59ChG3/9oIECwAYKyA0wmvTAkKf9/jJu4GACBAgSKGRYzz7D
hvUbOLjfQD8+Bw707+vfb38//vr31Sfge+75F2B97SUI34AEJijgfew9eCCDFFI44X/sUXDeBA9c
l91JJHknEHc6oYYAaxGgl4F+HbTYAQkwxijjjDTWaOONOOao44489uhjjC7ep2GHCBgQGlFGgdeV
AaxNkN4FLcI4Ago3VGnllVhmaSUNXFbJZZc03BCmlmSWaeaZaKap5ppifkkDCiiMMEIHFlAwQQMM
GAmUVUVxl5df5ElQQYtytsnlGIgmquiijI6RRhqNIvoopJFWaumlmGaq6aaZMuEpE2/OyQEEDiiA
QAF79lmiAQw0AAEF/hx0MCWXTCT6KCO45qrrrrz26uuvwAYr7LDEFmvsrnQkG4YToMbZgZ2moira
RgutyhoEg85aaxq7uuLtt+C6Msu44s5S7rjopqvuuuuK6+6557Irr7novktuvezGm66+8/arbrne
zuLIwI4k60QLzlYAQQNFbsenXdY6IIEFstLgKbe4fhvKJ5EoEkccijSChyKFCDKyIoqMLIjHJuMB
csuKCGIyySnXHEchKLeMx84g71zIzmv8fDMeQeNRyBoj/2y0z3GYLMjPP7+RstJK4/H00jOjfHLN
Hu88chxeFz2y0WsI0jTJX+OhiSavJGPMMeiGUvCyb9K58KkOW+Qn/moKSEwxChY/6sgkroRiyRpg
6AADDknUkQgddrQh+eSUo4EG5Zhjbvnkl0t+uRyZtwF65p1TDvrokqMeehtuuLF66avHTjkZo3cu
RyKTy2GHG3P4YcUSOYBRyCuijBtKKIssi7AHozIs7cOl/cS33x0AzkQaAxceCRU54BDFLL544803
4kPzDfnnp6/++eOv3/766L+Pfvrty+8+/fHDP//++vOv//j2+18A5+cNaEBDfN44Ri88QYUurAES
vZjF8RZBh4OhwAMKW4CeQjQR6bGqARK4gAesR4eBzeITahCCD+DgjHJ4IxrOiKEzlrEMZ8AQGtEw
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
END_OF_GIF
return $gif;
}

sub encoded_but_exit1 {

#END_OF_GIF
###return $gif;
###}
##
my $gif =  <<'END_OF_GIF';

R0lGODlhjABIAOf/AA8TTxEUUAgXUhIVUQ0aVRkaUREcVwkgWhghVxEkXxojWRUoXR0tYxQwZBo0
aBM4bBg9cSU+bilAcRhGeiZHdxdLfyBNey9MdyhSgTVPfCJXgzRVgChdiythiTRfiCNkkTlfgwBw
lBxrfxxtkilpmBhvjwJ0nzdokSxskwB5qgt2rAB7nw14l0RpjhR3nCF0lAN8piB3kU9rjDF1nCJ7
j0dwlTp0ly95jjJ4k0txkDF6iQyCpw+AsheAn0N1kgCGsA+CrTx5jySAlC1/mQCLry2Aozd/lAWL
tjWBkEF+lTeAp0CAjyWEvUJ/oh6Jrh6Jt0ODkyaLoQCUxE6BnyqLqk2DlEKHkACXwDmJrGCAnEiI
mE6HkkOKoxiVuCuPvB6TvluFnlOImiqVs1uLl2KJlz+RsxKdxy2YrVWPmhGezz6UrluOoFaPqV+P
nEuUqWeOnASm1WWOqSqev1SVpUSZu2WTmTmcyCSi02KWnCKkzlGcoWaXo2WXqWGYsBWr23KVqm2Y
n02exXGXoyOqzUSiyECkxS+pxh2t1k2hwVOguwO14z2m0l6gsEykvkKnv1ygyTiswWShuge54Xae
rHSgp3Kgs3CirlipsX2fqHiio1aqxCq13hS/4Cq52yW71oOjsmOsu0my136mtISnsI2ktUy1zYin
qlK21T290WO0zYysr3ayuZCrtoauvCfG5yLI41G81JSssV66x3uyxIqvt3WzzhDO7l+6zjjE6Fy+
wZWxu5+vtZ2xvSrP6ZqztzTN7mnBzhvV7kDM3WDE2Jq3tFPK3VnK1J25xDrT7qK5vofByZ28v4HC
16a6xmXL3pi/zKu8wqO/vDXb7kjZ5qjAxKzAv7K/vzTg7KjDuLW+xmLU5S7i9HPR3UDj73LV6W/Z
47fHzLPJyEnk+LLL0KjO21fk8kjq9lPo7mvi8r/N3nPj7YPh7VDy91/w9l/19IPt9MLd5m/29pPs
9Xv094r2+ZD49Zv398zq8qb5+a73+t/s8KX99rX59bz39fT6/P7//CwAAAAAjABIAAAI/gABCBxI
sKBBgwIOKlzIsKHDhxABCEgYsWLEhAICZJzIMYDHjyBDihxJsqTJkyg1grTIkqFHjgUIECgQU+ZM
mjhz6typ06bPnzd5Ch1K1CbHjAIptoSYUONEmTQRSJ1KFYGCq1ivVt3KtWvXrGDDihW7FefRpQ+b
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
gw8eUV6DAwIAOw==
END_OF_GIF
return $gif;
}

sub encoded_but_exit2 {
my $gif =  <<'END_OF_GIF';

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
AgA7
END_OF_GIF
return $gif;
}

sub encoded_gif_banner {

#END_OF_GIF
##return $gif;
##}
#
my $gif =  <<'END_OF_GIF';
R0lGODlhcQJFAOf/AEYrbUowck00cEBBP1E4dFQ6d0VGRFk/fEhKR1RBfVdEf0tNSlxFe15HflBR
TmJLglNVUmVNhVZYVmZPhmNSiFpcWWdWjF1fXG1Yii5xTGRlYzR3UnRfkTt4WTBzrT94VCR3sGlr
aGxqbnlklj98XXVnmHpolEJ/YDd7r35rlzt+s0aDZHR1c4FumkmGZlCEZj+BtlGFZ0GDuIVynlOI
aXt8eUyFtYl3o4V6pFiNblCIuFGJuVqPcFKKukqNvFSLvIKEgY1+o1qTeVaOvmKSelaRupGCp1+Q
u2WVfYiKh1qUvmKSvmiZgJaHrY2OjGucg2eXw2CaxJuLsZGSkGKcxqCNrpuQr3ChiGqew6OQsXih
ivuIAHSexqGVtG+ix5mbmH2ljvuPAXOmy6aauvqUBYGqkvyVAJ+hnnyoyP2WAICsmomqlPmYAPyW
G/uaDKakqIaqzKygwIyumKSmo4CtzbChvPybH4yxoKeppvucM/ugE7SlwPugIoSy0oyx0/uhLZG2
pbKqw/yjOIy10K2vrPyjQJS00PunMZW6qJa20o+407auxvyoOvypQ7O1sp+8rJq61rmyyvqtRf2r
VP+sTv2vP5292r21zv6xUP2xV6XCs7q8uMO4y6TB2MG50v6zX/23Wr7AvarHt8e8z6nF3P26Y/67
cszB1fy/X/u+bK7K4rbMvsXHxMnF17TM3v7Bdf7Cff3Dg/3GeLjQ4s7L3L3TxPzIf8zPy7vT5f3K
h8HVztXP2/7Lj9LS1r/X6fvPkcrYy9PV0trT4Mja08ba5v3Tm83e2Mvf6+Ha5tzd2v7aptLi3M7i
7tXh7+Xe6v7er+Hj4P3ftvzgveLj7dzm4d3l7ufk6f/iuf/iwOXm8ODq5eDp8enn6+3n5v/myejq
5/3owuTs9f/o0eTu6f3qy+7r8Pzr0ufx6+fw+O7w7fLv9P/v1u3z9fHz8P/x3vD2+PT28/f1+f/1
6PP4+/f59vr4/PT6/P/48fr8+P388/f9//77//v9+v/9+/z/+/7//CH+IUNyZWF0ZWQgd2l0aCBH
SU1QIGJ5IHBhc2hhbm9pZC5ydQAsAAAAAHECRQAACP4A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGi
xYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNI
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
QjXUQ0XURFXURWXURlXUgAAAOw==
END_OF_GIF
return $gif;
}
#

sub encoded_chartlogo1 {
my $gif =  <<'END_OF_GIF';
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
SdrS/i4gADs=
END_OF_GIF
return $gif;
}
sub encoded_chartlogo2 {
my $gif =  <<'END_OF_GIF';
R0lGODlhLgBjAOe2AHcAAHYABEANZXUBXXkAZaEAAqIACz8WaXYJZUIcaJkBfr0AMLwANbwAOpUQ
E6gMB74AQbQDQbIJDbwHE0wfepwIgZcUGqETGbQOFqYJh5UQfq0UE54Og1MlgbEJjrcUGFIofOkA
UZcUgOkAV1Eqd+0AT+kAXFcphcEUHsIVGLoZGlUue6sTi1stiaMiKFE0a9cOWqwhIF0ui8UaILMU
lmEuhs4TVlgxi74eHa0jJ8cdIr8gHvsJVmMwlfsKXMgfKGIzkGQyl1U7bLYamb8Xnu8PYfAQXPoN
YcMkIWozk2Q1kmY3lLgem/oQZ7kfnGc4lvwTY7sinqAsjKcqj8Qgo2w8mvMaZKotkW4+nA1ger8o
ovghYqs8PnVEoxZkftkzNBpmgLpEALhIALJKALA9mwBynPowWvowYNsytHlQrQx0mZlQa9Y3s1Nx
FgB8oFVyDu9AQlpxGRd4nblQUZpXcPw9XpdacYpYufw/ZF96DRSEqQCKtLJYnepGyNFjEwePs9Zm
CgCUvSOLsNJdeA+RtctlXJxoywCYwnR7j99oE5hszO9nAACbvshhsupqAGuNIkSTXnWBjUaVYEmX
Y3+EhnCSKPduAE6WaG6VFcVzZxSexyWavr9utpWDYnyIiACmz3+Ig/lwD3CXIxqgyfZzAMl0e5KE
fyqdwfZzDpOIZFKbbHaPe8Z4fB+iy8F6ewep0lubbr13tFWdbyKjzXyQg1mcdcB4sF2cb3ySeXaU
eV6dcP15BmOdd/l8BXOYfGadcZ+Kh5uMiP97C2Sdg2ubg2edfWGgc++AEf98DXKceHyiJoWWhG2f
en2jJ/+ADmGmcn6gWYGlIImadv+CEoOiTmqmc2elkIKjVWuliv+GEmymi3+rJYWlV4OuKNKTTLKa
Z4itKYWvH5Oidy234GOvkWqtkZCoVa2dbYWwK/+OGYqvK4m0LzO+4I24NJG7LZC7NtuiWPuhLZbA
Mv+kJzfO8MW0asuzZMqzav+rK57IO53IQ0na/KjRRbHhU7vrXb/uVyH+HkNyZWF0ZWQgd2l0aCBH
SU1QIGJ5IHBhc2hhbm9pZAAsAAAAAC4AYwAACP4AIQkcSLCgwYMIEypcyLChw4cQIzI0tcaOxYsY
L9KxM0miwkELGDBoAKGkyZMQIsDymJBViRAwR5iYSZPmCBsrWR50dcaIkSI/iwgVaqWoEZw6d+I5
wrSp06ZHcyYl6ApPk6tYs2KNOrVg1adPtyLtOtBVHR8+jkDZYgWK27dQuJIV6MoMDx5pt+jd+1bu
3FJ40aqFSxiGVLKDQgxdzBio4bkClwELRrmy5cuQMw+kRcmT58+UQH0G3Xm06dGUKHVUSGYAgdew
Y8ueTRs2gsMHOXmowKG379/AFQjnDRy4BtwGbbHJwKK58+fQM0hnDh368YWx+gyhwb279+8evP4P
2f6dBovrCrNrGc++vfv38MefR14wOxUn+PPr3x+lfxT+/8mHXkL2+WfggQgmaOB82PVBhRYQRijh
hERUWOGEWlChIQ0DIhQLGlFoKOKIJFJhIREPZlhiFCLQR1AjRAzBxIw01mhjezbaSAQHtSzExxRX
BCkkkEIWSWSRSBYpxSULrVYQkwdBqdmUOhXzghBYZqnlllxmKSVExHRwwJhkjinAmQKUqeaYCbi4
0DB3nCDnnHJSYCcFHdCp5wkkuKkQMYZU0YIMhBZKZws31FDooi306dEwiqQBxKSUVmrppY36mRCk
aTyxxKeghirqp0qUmumjkT6h6qqstroqqP6nSsTpE1XUamsVq96qq6COSkSMIl3simsQQSxRKxa3
YqEsEL1GVMwdwlYRRA89JEFrtFWsoClCxMhwQgvghtvCoeKW2wII2x7ECyKRtOtuJOy+K++8TlLp
0CTM5Kvvvvzqm0y//CbDyy8A57taNXm08cbCDDfscBsKOyzxxAzHIYtAz8iDycYcd+zxxyCH3PEj
F0PyjD/gKKPyyiy37PLLMK9MMsb/6BPNNjjnrPPOPPfs8zbKzGzyP/ygY/TRSCet9NJGg7N00CU/
Q3Q761Rt9dVYZ6111kdDjbE//LQj9thkl2322WiLHY3QUufTzjtwxy333HTXbfc76LDdj/47fPft
99+ABy6435WUXI0723Sj+OKMN+7445ArHo4oJRtDDTeYZ37NNZl3znnnmG9uzujmgG46NPXaq9kk
utzi+uu38AL77LTXkrpD5YDhBRi89757FsDv3vvwvZccUTmMqCHH8swvX8bzcrjR/PRqGA8ROfQQ
8ocg3HcvyB7gey8+925Y/1A5+3wSyPrst+/++3+U7xH64xyyyf3424///vzHbz7u+xjHKDRBwAIe
ooAILOAp7ue/+QVwFBCM4AAlSEEIErCBEqHfKFrBwQ568IMfJIT8MriPV7TiEyhM4Sc4uEIVpnAW
szjFCCNCDnZsEIStKOAGV4hDPfyvIf7l0B4hhkjEIYLvD38oohIJ4UOPyEIbUIwiFK0hxSpaERu3
U50WISGNTqTii2AMoxizqBNvhEEMaEyjGtMYhjHcIjP2OIYj5kjHOtJxEYBI10PqEQ9U+PGPgAyF
IFHhBz065B742IUiF8nIRRLSkA1BpDAmSclKUvKRmUHkNDbJyU5espCZxEcnR9lJTEKmHvPgZDZW
ycpW9gKUkLFHOia5yVbaMht5zAw8LEEKUgDyl34kRSIgyRBxfOMcyEymMpdJxi06xBe4iKY0cbGK
XEwzmta8pjav2UyBcCEAAAinOMEpznKSs5zoNKemCoEBA7jznfCMpwEKIM96GsABmtfKxBc2wM9+
+vOfG3gAQAe6AQvkEw4q+IBCF8rQhkqgoRBVaEEPqgMVWPSiGM3oBDLKUYtOdCGZgMMPcEDSkpr0
pBM4KUlRwFIceNSgIBUpDnZA05ra1KYTYCkKbkrTkn5UISGdARJmQNSiGtWoKUhqCoQ61KLq4Kkf
gClQvzCDp1r1qljVgVKX+oMfZFUHKJBqQgoxAxzo9KxoTatZ03rWC2hqDjHIgVznSte62vWuco2B
CzR1C13A4q+AZYZfAftXXfCCsIhF7C1+MZBuGoSMjnWmZOcSEAA7
END_OF_GIF
return $gif;
}

sub encoded_ico {

#END_OF_GIF
##return $gif;
##}
#
my $ico =  <<'END_OF_ICO';
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
END_OF_ICO
return $ico;
}
sub encoded_but1eng {

my $gif =  <<'END_OF_GIF';
R0lGODlhyABIAOcAAA8TTwgXUhIVUQ0aVRkaUREcVwkgWhghVxElXxojWRUnXR0tYxQwZBozaBM4
bBg9cSY+bihAcRlHeyZHdyBNey9MdyhSgTVPfCJXgzRVgC1diithiSNkkTlfgwBwlRxrfxxtkilp
mBhvjyxskzlpkAB4qQZ4owx2qwB7nxN3nEdpjyF0lBB5lyB3kU9rjACBsSJ7jg1+sDR1mzF3kkhw
lS95jRKAnxGAqwCFrzN6iUhzkQyDpzx5jyR/pSaBli1/mQCLrwKLtTZ/lDSBjzKAoD9/j0F+lTeA
qByItR6JrkKAokKDkkuBkiiLqk6Bn0GHkACWwDOJrz6JmEeHlz2JqUGJok6HkmGBnByTviuPvFuE
nVOImR+Vt1qKlmKJlz6RsxOdx0KSqi2YrVqNn12NmVaPmhWezwCk01aQqSqdv2WOqV6TmFSVpUSZ
uw2n12SToGeTmTucyGKWnCOj1SalxlGcoU+bsiWlz2aXo2WXqWGYsBar23KVqm2Yn02exXKXokSi
yE2hwlOguyOs1ga040Cmxj6m0gC43yutzj6pwF+hsVygyXaeq2aiu3Sgp36drHyfp3CirlipsXKh
tFaqw3mjpCu13hS/4Bq95Su53CO814Sjs36mtISnr42ktUy01oinqgDK6k640D290Yysr3ayuSbG
6JSrsGW2z4mutpCstnuxwyPI4zPD6V66x4awvV+6zna0zly+wRbQ8JWxu5+vtZuyt52xvSvP6TLN
7xrV7mnBzjvN35a2uZq3tFPK3VnK1DfT7p25xGPI23jC2qK5vorByp29v6a6xqK+vDTa7au7wozD
1ZrBzUjZ5qjAxKzAv7K/v6jDuLW+xjbg7GLU5S/i9Efd5HPR3XHU6D/j727Y47rGx7fHzbTJyErk
+bPL0J3Q4Tjs91fk8q7O10vp9k7p7rvL2mvi8nPj7YPh7bHV61Hz+F/19L/e6W7295Ps9cne5Hv1
94fy+JD49Zv399Dp79nq8Kb5+a73+qX99rz39eTu8PD3+fj9//3//CH+H0NyZWF0ZWQgd2l0aCBH
SU1QIGJ5IEBwYXNoYW5vaWQALAAAAADIAEgAAAj+AAEIHEiwoEGDAQ4qXMiwocOHECNKnPgwQEKK
GBcm3AjAokcBIEOKHEmypMmTKFOqXMmypcuQFzPKVOiRwIABBGzexJmzp8+fQH/uHEq0qNGjSJMS
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
jNsA25o3OUMALx8gAQv+aIAEv270F77QhmAHIhCCuLcg9L1vfdvb3//ON78FPnCCDxzgBQe4vQu+
cIY33OEIBzi92/AFQB/B2xqwgAQe0FYE4Nbcut3VAAqQ6was28Aa4MAIZADvIyjhCC+HecxfrgSa
19zmMsd5znUOc5vTXOc99/nOhT50ohdd6CsfwbcxkPGNL6DQhv44H0M+YAUsoAEelAAFLIABDaCc
A18He9jFPnayl93sZ0d72tW+dra3/etd18DSw63xBjg9yVGBetR3OgB0V50BV3/AuiUwAQkUfgKE
L3ziFX94xjfe8Y+HfOQlP/nDK97yl8f84Cm/ec43PvGI17gDGsAAu+e/RoN6BzlvfCXyA6Tb7wv4
ewNkP3va1972t8d97nW/e9733ve/Bz7tSW/3BBjA9OVGPch3tfqRG7/1CEgAAqTvegVU3/rXn372
tb997V/f+9+3PvelD37yl9/85xe/+MEv/QS0X/rGLwDfl598+qt+9XzHfwH0v3/+99///wfAABTA
ASTAAjTAA0RA/cM/+dsVRKu/B1y+CJTACaTACrTAC8TADNTADeTADuTAWnvAELw1ESTBEjTBE1wy
5Eu+gAAAOw==
END_OF_GIF
return $gif;
}
sub encoded_but2eng {
my $gif =  <<'END_OF_GIF';
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
J4TCKJTCKaTCKrQKwitswg45QpwJCAA7
END_OF_GIF
return $gif;
}
sub encoded_banner_eng {

my $gif =  <<'END_OF_GIF';
R0lGODlhcQJFAOcDAEYrbUowck00cEBBP1E4dFQ6d0VGRFk/fEhKR1RBfVdEf0tNSlxFe15HflBR
TmJLglNVUmVNhVZYVmZPhmNSiFpcWWdWjF1fXG1Yii5xTGRlYzR3UnRfkTt4WTBzrT94VCR3sGlr
aGxqbnlklj98XXVnmHpolEJ/YDd7r35rlzt+s0aDZHR1c4FumkmGZlCEZj+BtlGFZ0GDuIVynlOI
aXt8eUyFtYl3o4V6pFiNblCIuFGJuVqPcFKKukqNvFSLvIKEgY1+o1qTeVaOvmKSelaRupGCp1+Q
u2WVfYiKh1qUvmKSvmiZgJaHrY2OjGucg2eXw2CaxJuLsZGSkGKcxqCNrpuQr3ChiGqew6OQsXih
ivuIAHSexqGVtG+ix5mbmH2ljvuPAXOmy6aauvqUBYGqkvyVAJ+hnnyoyP2WAICsmomqlPmYAPyW
G/uaDKakqIaqzKygwIyumKSmo4CtzbChvPybH4yxoKeppvucM/ugE7SlwPugIoSy0oyx0/uhLZG2
pbKqw/yjOIy10K2vrPyjQJS00PunMZW6qJa20o+407auxvyoOvypQ7O1sp+8rJq61rmyyvqtRf2r
VP+sTv2vP5292r21zv6xUP2xV6XCs7q8uMO4y6TB2MG50v6zX/23Wr7AvarHt8e8z6nF3P26Y/67
cszB1fy/X/u+bK7K4rbMvsXHxMnF17TM3v7Bdf7Cff3Dg/3GeLjQ4s7L3L3TxPzIf8zPy7vT5f3K
h8HVztXP2/7Lj9LS1r/X6fvPkcrYy9PV0trT4Mja08ba5v3Tm83e2Mvf6+Ha5tzd2v7aptLi3M7i
7tXh7+Xe6v7er+Hj4P3ftvzgveLj7dzm4d3l7ufk6f/iuf/iwOXm8ODq5eDp8enn6+3n5v/myejq
5/3owuTs9f/o0eTu6f3qy+7r8Pzr0ufx6+fw+O7w7fLv9P/v1u3z9fHz8P/x3vD2+PT28/f1+f/1
6PP4+/f59vr4/PT6/P/48fr8+P388/f9//77//v9+v/9+/z/+/7//CH+IUNyZWF0ZWQgd2l0aCBH
SU1QIGJ5IHBhc2hhbm9pZC5ydQAsAAAAAHECRQAACP4A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGi
xYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNI
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
BW5whTtc4hbXuMdFbnKVu1zmNheyAQEAOw==
END_OF_GIF
return $gif;
}
sub encoded_but_exit1eng {
my $gif =  <<'END_OF_GIF';
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
END_OF_GIF
return $gif;
}
sub encoded_but_exit2eng {
my $gif =  <<'END_OF_GIF';
R0lGODlhjABIAOcCAA4STwQWUBIWTBUXTg0aTxMeVBMfTxweTwwjURIoUQksVBwoUhguUhExUxU3
VB80WBs5XCM5WBg9VRFAVx49WR5DVRlJWiVIXh1MWCRPVTFNYh1UWSxQYilWYiBcYS5ZYCReXSJh
WSpmYCJpXjVmaDxmbSlyZCt0YDpyZTxxbSp4XRmHRTR8Zyx/ZQ2ORT19bhaMTw+RQC+FYiKLVUh+
dgeWSzSGahSTTwCaR1J9eBKWPSqNUTGLVyaRThWXRjyLVzmOUzSRTySVVzCSVgifTDKQaiqUYAqf
UkSOVT2PbACmS1SJfDmUXz+SY0yNdwCoU0qRY0WTX0mScxWlUSqgWwSsVwCvTGWMgkOZbz6adjef
WkeZaDSfaCukUTefYU+YahOtUUKdaVmYawC1V1iXfiiqUFaZcmSUh1+WhUGhdmCYeGCacxqyXR+y
ViCyY2qZgVyfeDisaFaieQC/WWGehWGffjevXV+hc2efeRG8XWmff0WsbUWsdCO3bjKzbHKegBq7
ZE6qd1aoeEiuaSG8WESxZB28a22keBnCVXCkfhDEXWSogDK6ajG9YG6nh3ikknWmjQDOZUS5dhLL
XXqoiRzIYn6nj1C2gzq/dmuydlW4fnCwgoeokke/boSqjADWZWa2iHSyinexkgjXZzDLbFa+fYKv
kTvHfImvkiDTY4axjCjSXDLPYUrGfFfDdI6vmUPJeIiymlnChwDhZ0rNc4a3nhDhYVfKhCLdZSDf
bTbYc5a3oFXPgp23onfGlIPDmpy6qh7mbmXOjEPae2nNlSLnZpy+qJfBpFrbdFrafx7vZqbArGDZ
iGfXjanAuKvBszDta67BrUfnb1DmiVLnfi31aljpd33apjn0clrnkjf3ZbfKtmHojXDkj4rarLHN
u0nzdbfNv1j0e7HUvlX2g5vduKrYvmL1g8TUumn1jHPzinLzkXj0mYb0lIH1n4n0o430nMTj1JX1
spT3qJr2rJ/1s6P2ran1tK32vrr0xbf2vrT3xcD0ytzz5ujy7f3//CwAAAAAjABIAAAI/gABCBxI
sKDBgwYDBEB4UKHDhwoZSpxIEeHCihgzWgQQUaGAjwIgKhww4CHJkyhTQlQpUkDKlzBThgxAEqIA
jhE16pTo8GPMn0CDCh1KVOjCnDuT9kRJoCmBAlCjSp1K9QDVq1izat2qlQDKo0k1enQ5oGkBA2gN
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
gw9GOGGFF2a4YYQJFliigAAAOw==
END_OF_GIF
return $gif;
}
